Может случиться, если вы заставили sshd крутиться на нестандартном порту и забыли, а на роутере пробросили порт 22. Второй раз уже, блядь. Второй. Третьего не повторится.
На дворе 21 век, а функцию двунаправленной обратимой транслитерации на основе ГОСТ 16876-71 я так и не нашел! Поэтому написал собственную. Если пригодится – помогите и мне, отправив сколько-нибудь монеток на BTC адрес 16iGBgs1JW24QSrLZh47MtbxLSMtt5Mnyx
Пастебин, поскольку wordpress-разметка кода исковеркана, а исправлять лень: http://pastebin.com/37KpF0cJ
// Функция обратимой транслитерации на основе ГОСТ 16876-71 function translit_url($text,$decode = false) $simplePairs = array( 'А' => 'A' , 'Л' => 'L' , 'У' => 'U' , 'е' => 'e' , 'с' => 's' , 'ё' => 'jo' , 'З' => 'Z' , 'Ц' => 'C' , 'К' => 'K' , 'Е' => 'E' , 'С' => 'S' , 'Ё' => 'JO' , if($decode)
{
preg_match_all('/./u', $text, $text);
$text = $text[0];
'а' => 'a' , 'л' => 'l' , 'у' => 'u' ,
'б' => 'b' , 'м' => 'm' , 'т' => 't' ,
'в' => 'v' , 'н' => 'n' , 'ы' => 'y' ,
'г' => 'g' , 'о' => 'o' , 'ф' => 'f' ,
'д' => 'd' , 'п' => 'p' ,
'и' => 'i' , 'р' => 'r' ,
'Б' => 'B' , 'М' => 'M' , 'Т' => 'T' ,
'В' => 'V' , 'Н' => 'N' , 'Ы' => 'Y' ,
'Г' => 'G' , 'О' => 'O' , 'Ф' => 'F' ,
'Д' => 'D' , 'П' => 'P' ,
'И' => 'I' , 'Р' => 'R' ,
);
$complexPairs = array(
'з' => 'z' , 'ц' => 'c' , 'к' => 'k' ,
'ж' => 'zh' , 'ч' => 'ch' , 'х' => 'kh' ,
'э' => 'eh' , 'ш' => 'sh' , 'й' => 'jj' ,
'щ' => 'shh' , 'ю' => 'ju' ,
'я' => 'ja' ,
'Ж' => 'ZH' , 'Ч' => 'CH' , 'Х' => 'KH' ,
'Э' => 'EH' , 'Ш' => 'SH' , 'Й' => 'JJ' ,
'Щ' => 'SHH' , 'Ю' => 'JU' ,
'Я' => 'JA' ,
'Ь' => "^'" ,
'Ъ' => "^`" ,
'ъ' => "`" ,
'ь' => "'" ,
);
$specialSymbols = array(
"_" => "__",
"-" => "_-",
"'" => "_'",
"`" => "_`",
"^" => "_^",
" " => "-",
);
$translitLatSymbols = array(
'a','l','u','b','m','t','v','n','y','g','o',
'f','d','p','i','r','z','c','k','e','s',
'A','L','U','B','M','T','V','N','Y','G','O',
'F','D','P','I','R','Z','C','K','E','S',
);
$simplePairsFlip = array_flip($simplePairs);
$complexPairsFlip = array_flip($complexPairs);
$specialSymbolsFlip = array_flip($specialSymbols);
$charsToTranslit = array_merge(
array_keys($simplePairs),
array_keys($complexPairs)
);
$translitTable = array();
foreach($simplePairs as $key => $val) $translitTable[$key] = $simplePairs[$key];
foreach($complexPairs as $key => $val) $translitTable[$key] = $complexPairs[$key];
foreach($specialSymbols as $key => $val) $translitTable[$key] = $specialSymbols[$key];
$result = "";
{
$char = array();
$nonTranslitArea = false;
for($pos = 0; $pos < count($text); $pos++)
{
$char[0] = $text[$pos];
$char[1] = isset($text[$pos+1]) ? $text[$pos+1] : null;
$char[2] = isset($text[$pos+2]) ? $text[$pos+2] : null;
// decode specsymbols!
foreach($specialSymbolsFlip as $key => $val)
{
$search = "";
for($j = 0; $j < strlen($key) ; $j++) $search.= $char[$j];
if($search == $key)
{
$result.= $val;
$pos += strlen($key) - 1;
continue 2;
}
}
// lone '_' symbol
if($char[0] == '_')
{
$nonTranslitArea = !$nonTranslitArea;
continue;
}
if($nonTranslitArea)
{
$result.= $char[0];
}
else
{
if(in_array($char[0],$simplePairs))
{
$result.= $simplePairsFlip[$char[0]];
continue;
}
foreach($complexPairsFlip as $key => $val)
{
$search = "";
for($j = 0; $j < strlen($key); $j++) $search.= $char[$j];
if($search == $key)
{
$result.= $val;
$pos += strlen($key) - 1;
continue 2;
}
}
// if nothing up worked
$result.= $char[0];
continue;
}
}
}
else
{
$nonTranslitArea = false;
foreach($text as $char)
{
if(in_array($char,array_keys($specialSymbols)))
{
$result.= $translitTable[$char];
}
elseif(in_array($char,$charsToTranslit))
{
if($nonTranslitArea)
{
$result.= "_";
$nonTranslitArea = false;
}
$result.= $translitTable[$char];
}
else
{
if(!$nonTranslitArea
&& in_array($char,$translitLatSymbols))
{
$result.= "_";
$nonTranslitArea = true;
}
$result.= $char;
}
}
}
return $result;
}
Есть такая штука, называется ингалятор махольда. Весьма полезная. Последний раз я покупал его где-то год назад по смешной цене в 100 рублей, выздоровел и подарил болеющему знакомому. Уже тогда его было трудно найти, но я не придал этому факту значения. А зря. Сейчас его цена взлетела аж до 1600руб. Почему? Все просто – эффективные миньетжеры придумали продавать их «с наборами эфирных масел», которые нахуй никому не вперлись. И для каждого разумного мыслящего человека очевидно, что набор этих самых масел стоит от силы рублей 300, если туда вообще не нассали. Надеюсь я еще найду нормальный ингалятор махольда без торсионных масел, а тех кто поднял стоимость со 100 руб. до 1600 очень хочется послать на хуй. Чтоб вы сдохли. И дети ваши и родители и никто вам не помог. Я бы лично и с радостью пришел поссать на вашу могилу. Проблем вам, ребята. И чем больше тем лучше. Рака, СПИДа, коклюша, в конце концов.
А я ушел искать ингалятор по нормальной цене.
Маньяк отравленные деньги
На счёт детдома перевёл.
Погибло двадцать депутатов,
Два мэра и один префект.
Раскопал свой старый годовалой давности фреймворк под php. Потыркался в него, понял почему идея классная, но не взлетит. А дело все в том, что php сам по себе язык скриптовый, а apache сам по себе такой сервер. И любые надстройки над этим всем будут выглядеть громоздко и уродливо. Если хочется фреймворков – надо ставить Node.JS и под него писать. И гораздо лучше использовать инструменты в их традиционном способе выполнения. Пускай даже с недостатками. Сделать из топора бензопилу в любом случае не получится. Лучше уж научиться хорошо пользоваться топором (а там есть свои нюансы).
Стандарт LSB предполагает, что в /opt устанавливаются все программные пакеты, которые не управляются пакетным менеджером.
Прим: таким как aptitude или yum.
http://unixforum.org/index.php?showtopic=83650
Был у меня оригинальный диск с драйверами для HP LaserJet 1200 PCL series, а потом я его просрал. А потом переустановил. И полезло из принтера говно вместо текста. Вместо драйверов на сайте hp.ru невнятная каша с говном, где выбрать что-либо адекватное с первого раза возможным не представляется, а если и скачаешь, то установщика там не будет (пичалька). Ну и в общем, починил я кое-как это говно, зайдя в настройки принтера и выставив там вместо «Использовать встроенные шрифты», «Использовать загружаемый шрифт». Казалось бы, проблема решена. А вот хуй! Говноэс новейшей версии не дремлет! Он сбросит нахуй все ваши настройки печати для принтера, ведь испортить вам (и мне) жизнь – основное, если не единственное назначение этого ёбаного казахского поделия. После долговременно-продолжительной ебли, выяснилось:
Помимо основных настроек в панели управления принтерами говнофорточек есть также еще одна сраная, тщательно запрятанная поебень, из которой говноэс и вытаскивает косячные настройки написанные ублюдками из эйч-пи. Собственно, вот эта ёбаная дрянь:

Если там донастроить, то говно перестанет дурно пахнуть.
На всякий случай сохраняю копию своего xorg файла для монитора DELL E178FP и видеокарты GeForce 6600, поскольку помню что продолжительное время трахался с настройкой иксов под этот моник.
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildd@palmer) Mon Nov 3 08:46:46 UTC 2008
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# Note that some configuration settings that could be done previously
# in this file, now are automatically configured by the server and settings
# here are ignored.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg
Section "Monitor"
Identifier "Configured Monitor"
ModelName "DELL E178FP"
HorizSync 31.0 - 81.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "CRT-0"
HorizSync 31.0 - 81.0
VertRefresh 56.0 - 76.0
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Configured Video Device"
Monitor "Configured Monitor"
DefaultDepth 24
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "0"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "metamodes" "1280x1024_75 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Module"
Load "glx"
EndSection
# commented out by update-manager, HAL is now used
#Section "InputDevice"
# Identifier "Configured Mouse"
# Driver "mouse"
# Option "CorePointer"
# Option "Device" "/dev/input/mice"
# Option "MinSpeed" "1.75"
# Option "MaxSpeed" "1.75"
# Option "AccelFactor" "0.020"
#EndSection
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
EndSection
Section "Device"
Identifier "Configured Video Device"
Driver "nvidia"
Option "NoLogo" "True"
EndSection
Section "Device"
Identifier "Device0"
VendorName "NVIDIA Corporation"
BoardName "GeForce 6600"
Driver "nvidia"
Option "NoLogo" "True"
EndSection
Section "ServerFlags"
Option "Xinerama" "0"
EndSection
Это можно сделать при помощи неофициального репозитория https://launchpad.net/~fkrull/+archive/deadsnakes
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo aptitude search python2.5
Лично мне эта хрень была нужна для установки bakefile, которая была нужна для установки e, потомучто на дворе уже 2011 год, а ни одного адекватного редактора с нормальной подсветкой кода так и не придумано. Vim несколько раз пытался изучить и буду пытаться дальше, однако, учитывая, что у меня раскладка colemak, это несколько сложнее получается. К тому же по умолчанию того что мне надо там нет, поэтому нужно еще будет ставить плагины, и т.д. и .т.п. и неизвестно что еще в итоге получится.
Ничто не предвещало беды.
if($rs = mysql_fetch_assoc($rs) && !is_null($rs['min_date']))
{
//..
}
Но вместо того чтобы проверять условия, PHP включает оператор && в расчет rs! Получается что-то вроде:
$rs = (mysql_fetch_assoc($rs) && !is_null($rs['min_date']))
Поэтому пришлось дополнительно указывать скобки, чтобы все работало правильно:
if(($rs = mysql_fetch_assoc($rs)) && (!is_null($rs['min_date'])))
{
//..
}
А сколько таких ошибок еще мною в коде допущено – даже не хочется и думать. Вернее, хочется думать, что ни одной.