Я тут подумал и решил открыть на своем оффициальном™ блоге список компаний, услугами которых я никогда не буду пользоваться. Почему? Все просто - они звонят и отвлекают меня от работы. А я не то что не люблю. Я  НЕНАВИЖУ  когда меня отвлекают. Вот и сейчас. Звонит. Говорю не надо спасибо, мне не нужен ваш спам. И нет чтобы положить трубку, нет, блядь. Мне продолжают доказывать как мне охуенно нужен консультант++, хотя на работе и так уже есть один. В общем, я буду вести отдельную колоночку и прилагать все усилия, чтобы ни одна из организаций, с которыми я имею дело, услугами этих компаний не пользовалась. Ту, которая сейчас звонила, не запомнил, но не первая и не последняя же. Все такие компании будут находиться в категории под названием "Чёрный список". В первую очередь чтобы я сам не забыл.

Как узнать IP-адрес samba хоста

Странное неочевидное для меня решение с англоязычного форума.

sudo nano /etc/nsswitch.conf file
search for the line starting with hosts (my line was like this "hosts: files dns")
add "wins" to the line ("hosts: files dns wins")

now ping netbios name should also work from the linux pcs

После этого можно использовать netbios имена вместо ip из-под линукса:

$ ping FF6E8234
PING FF6E8234 (192.168.1.101) 56(84) bytes of data.
^C64 bytes from 192.168.1.101: icmp_req=1 ttl=128 time=0.166 ms

А как вытянуть из этого всего искомый IP-адрес мне уже не надо, а вы наверное лучше меня сделаете. Если не лень - потом допишите в комментарии. Спасибо.

[ ]
 

Может случиться, если вы заставили sshd крутиться на нестандартном порту и забыли, а на роутере пробросили порт 22. Второй раз у��е, блядь. Второй. Третьего не повторится.

На дворе 21 век, а функцию двунаправленной обратимой транслитерации на основе ГОСТ 16876-71 я так и не нашел! Поэтому написал собственную.

<?php

/**
 * Функция обратимой транслитерации на основе ГОСТ 16876-71
 * @author http://space1000.zxcv.one
 */

function translit_url($text,$decode = false)
{
  // Split text into array of unicode chars.
  preg_match_all('/./u', $text, $text);
  $text = $text[0];

  $simplePairs = array(
    'а' => 'a'   ,   'л' => 'l'   ,   'у' => 'u'   ,   
    'б' => 'b'   ,   'м' => 'm'   ,   'т' => 't'   , 
    'в' => 'v'   ,   'н' => 'n'   ,   'ы' => 'y'   ,
    'г' => 'g'   ,   'о' => 'o'   ,   'ф' => 'f'   ,
    'д' => 'd'   ,   'п' => 'p'   ,   
    'и' => 'i'   ,   'р' => 'r'   ,   

    'А' => 'A'   ,   'Л' => 'L'   ,   'У' => 'U'   ,
    'Б' => 'B'   ,   'М' => 'M'   ,   'Т' => 'T'   , 
    'В' => 'V'   ,   'Н' => 'N'   ,   'Ы' => 'Y'   ,
    'Г' => 'G'   ,   'О' => 'O'   ,   'Ф' => 'F'   ,
    'Д' => 'D'   ,   'П' => 'P'   ,   
    'И' => 'I'   ,   'Р' => 'R'   ,   
  );
  $complexPairs = array(
    'ж' => 'zh'  ,   'ч' => 'ch'  ,   'х' => 'kh'  ,
    'з' => 'z'   ,   'ц' => 'c'   ,   'к' => 'k'   ,

                                      'я' => 'ja'  ,
                     'щ' => 'shh' ,   'ю' => 'ju'  ,
    'э' => 'eh'  ,   'ш' => 'sh'  ,   'й' => 'jj'  ,
    'е' => 'e'   ,   'с' => 's'   ,   'ё' => 'jo'  ,   

    'Ж' => 'ZH'  ,   'Ч' => 'CH'  ,   'Х' => 'KH'  ,
    'З' => 'Z'   ,   'Ц' => 'C'   ,   'К' => 'K'   ,

                                      'Я' => 'JA'  ,    
                     'Щ' => 'SHH' ,   'Ю' => 'JU'  ,
    'Э' => 'EH'  ,   'Ш' => 'SH'  ,   'Й' => 'JJ'  ,
    'Е' => 'E'   ,   'С' => 'S'   ,   'Ё' => 'JO'  ,   

    'Ь' => "^'"  ,   'Ъ' => "^`"  ,
    'ь' => "'"   ,   'ъ' => "`"   ,   
  );
  $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 = "";


  if($decode)
  {
    $char = array();
    $translitDisabled = 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;
      // Decoding 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 disables or enables translitting.
      if($char[0] == '_')
      {
        $translitDisabled = !$translitDisabled;
        continue;
      }
      // When translit is disabled, simply add char to result.
      if($translitDisabled)
      {
        $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
  {
    $translitDisabled = false;
    foreach($text as $char)
    {
      if(in_array($char,array_keys($specialSymbols)))
      {
        $result.= $translitTable[$char];
      }
      elseif(in_array($char,$charsToTranslit))
      {
        if($translitDisabled)
        {
          $result.= "_";
          $translitDisabled = false;
        }
        $result.= $translitTable[$char];
      }
      else
      {
        if(!$translitDisabled
        && in_array($char,$translitLatSymbols))
        {
          $result.= "_";
          $translitDisabled = 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 невнятная каша с говном, где выбрать что-либо адекватное с первого раза возможным не представляется, а если и скачаешь, то установщика там не будет (пичалька). Ну и в общем, починил я кое-как это говно, зайдя в настройки принтера и выставив там вместо "Использовать встроенные шрифты", "Использовать загружаемый шрифт". Казалось бы, проблема решена. А вот хуй! Говноэс новейшей версии не дремлет! Он сбросит нахуй все ваши настройки печати для принтера, ведь испортить вам (и мне) жизнь - основное, если не единственное назначение этого ёбаного казахского поделия. После долговременно-продолжительной ебли, выяснилось:
Помимо основных настроек в панели управления принтерами говнофорточек есть также еще одна сраная, тщательно запрятанная поебень, из которой говноэс и вытаскивает косячные настройки написанные ублюдками из эйч-пи. Собственно, вот эта ёбаная дрянь:


Если там донастроить, то говно перестанет дурно пахнуть.

DELL E178FP xorg.conf Nvidia GeForce 6600

На всякий случай сохраняю копию своего 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

[ ]