Эти ваши интернеты очень-очень странное место, вот Bolk написал Личный пост Евгения Дорохина в своём блоге, а оказывается, Евгеша не давал разрешение делать Болку личный пост у себя в блоге! Это восхитительно!
С нетерпением жду у себя в блоге гневного комментария, Евгеша!
2015.05.06 21:20
За последнюю неделю мне дважды хотелось написать разработчикам / саппорту двух разных сайтов. Один большой, а второй нет. И в обоих случаях не нашёл ничего подобного на developer@example.com
или support@example.com
.
Или багтрекеры с обязательной регистрацией, или какие-то социальные сети, но не e-mail, о боже, только не e-mail.
Мир катится в неправильном направлении, неудобненько.
2015.04.30 10:40
Если когда-нибудь у меня заведётся своё кафе или какое-нибудь подобное злачное место, то целыми днями на 117 мониторах будут крутится только демки.
2015.04.27 18:39
Код должен быть оформлен как минимум одинаково. Лучше — красиво, но как минимум одинаково. Но хочется красиво. Но проблема в том что “красиво” у всех своё и это немного проблема. Понапишу про то что я считаю красивым.
1. Табы или пробелы?
Википедия нам сообщает следущее:
Горизонтальная табуляция (HT, TAB) — управляющий символ таблицы ASCII с кодом 0916, используется для выравнивания текста в строках. Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25… Вводится при помощи клавиши Tab ↹, во многих языках программирования обозначается как \t.
По непонятной мне причине я пока не встречал по работе людей которым нравятся табы. Всем нравятся пробелы потому что у всех выглядит всё одинаково. Я не совсем понимаю почему преобладают идиоты которые не могут осознать что “одинаково” != “удобно”.
Желаю всем любителям пробелов умереть в агонии.
2. CamelCase или Snake_Case?
По непонятной мне причине в мире восторжествовал CamelCase. Печалька. Я люблю Snake_Case. Возможно, дело в том, что я люблю всё что не мейнстрим?
3. Именование переменных
Несмотря на то что я пишу на пхп и прочем мусоре с динамической типизацией, я полюбил венгерскую нотацию (вы не поверите, но она тоже не мейнстрим):
a_var -- array b_var -- bool i_var -- int f_var -- float s_var -- string o_var -- object f_var -- function (lambda)
Помимо базовых типов, можно по ходу дополнять всяким своим, к примеру я пишу m_var
и наивно полагаю что там лежит модель.
Главное удобство не в том, что я знаю какой тип (с динамической типизацией там может быть что угодно), а в том что я избавился от главной проблемы — именования! Сравните вот:
ids = array(); id = 12; pet_name = 'MALAMUTE'; pet_model = get_model(pet_name); is_pet_model_loaded = (bool)pet_model;
И что-нибудь типа такого:
a_id = array(); i_id = 12; s_pet = 'MALAMUTE'; m_pet = get_model(s_pet); b_m_pet_loaded = (bool)pet_model;
Я готов принимать любые аргументы по данному вопросу (например, что это неудобно, глупо и по-идиотски), но у меня есть ровно 1 контраргумент: я никогда, никогда, никогда, никогда, никогда не должен буду больше писать это идиотское ids
, потому что если у меня написано a_id
, то это значит что это массив. Массив — это всегда много. Мне не нужно писать это идиотское ids
. Вам просто не передать как же я сильно ненавижу это ids
.
2015.04.27 09:30
Увидел страшную штуку в интернете — человеко-спальник! Спальник в форме человека. Не знаю насколько это удобно, тепло или хорошо, но с трудом сдерживаюсь чтобы не купить. Я не знаю зачем, он просто сам по себе прекрасен. Самый идиотский спальник что я видел. Не говорите мне что вы можете удержаться от его покупки.
2015.04.27 03:44
Совсем недавно, буквально пару месяцев назад, я написал душераздирающий пост про программное выключение монитора в линуксе, но с тех пор прошло много времени, технологии шагнули вперед, а монитор программно всё ещё хочется выключать.
Радует, что больше не нужно сходить с ума от того что по VGA кабелю передаются управляющие команды, но всё же.
Традиционно в линуксе говорят что чтобы выключить монитор надо сделать вот такое:
# xset dpms force off
Но, знаете, у меня после этого монитор все равно включался и это немного, самую малость, бесило. Прошли годы и я всё же решил попробовать все ЧЕТЫРЕ ВОЗМОЖНЫЕ ОПЦИИ. И, вы не поверите, одна из них работает как надо! Вот уж неожидаемо!
# xset dpms force standby
Удачи! Выключайте монитор! Проваливайте из интернета!
2015.04.26 21:35
2015.04.26 02:54
Если вам когда-нибудь захочется слать письма с локалхоста, но при этом не захочется поднимать у себя весь тот ад что тесно связан с отсылкой почты, а просто захотите слать через внешний smtp сервер, то ssmtp — это то что вам нужно.
Правда, с 32-х символьным паролем на гмаиле оно почему-то не заработало, но я справился.
Подробности можете смело смотреть в archwiki (я, кстати, ненавижу archwiki потому что она пришла на смену gentoowiki что как бы намекает на нехорошее).
Ну а в тут я напишу на память (вдруг archwiki будет менее надёжное хранение информации чем мой бложик!)
Собираем:
# emerge -av ssmtp
Докидываем в конец файла “/etc/ssmtp/ssmtp.conf”:
# tail -n 23 /etc/ssmtp/ssmtp.conf # The user that gets all the mails (UID < 1000, usually the admin) root=username@gmail.com # The mail server (where the mail is sent to), both port 465 or 587 should be acceptable # See also http://mail.google.com/support/bin/answer.py?answer=78799 mailhub=smtp.gmail.com:587 # The address where the mail appears to come from for user authentication. rewriteDomain=gmail.com # The full hostname hostname=localhost # Use SSL/TLS before starting negotiation UseTLS=Yes UseSTARTTLS=Yes # Username/Password AuthUser=username@mail.com AuthPass=password # Email 'From header's can override the default domain? FromLineOverride=yes
Создаём адские алиасы для пользователей (по идее это для модицикации From)
# cat /etc/ssmtp/revaliases root:username@gmail.com:smtp.gmail.com:587 malamute:username@gmail.com:smtp.gmail.com:587
И добавляем всех подряд в группу ssmtp:
# gpasswd -a malamute ssmtp # gpasswd -a phpfpm ssmtp
2015.04.24 13:45
Я вот в последние года полтора думаю “а не пора ли закопать стюардессу?” хитро поглядывая на жаббер.
Пожалуй, единственное что меня останавливает — нежелание оставаться один на один со скаепом.
А вы что думаете по этому поводу? Жаббер не взлетел из-за xml’а или происков массонов? Ведь даже гугл его ~год назад уже закопал.
2015.03.31 19:22
В какой-то там версии хрома много месяцев назад отвалился флеш. В новой опере тоже не очень работает. Чтобы починить нужно поставить “pepper flash”, в гентушечке ставится вот так:
# emerge -av chrome-binary-plugins
Мне пришлось синкануться чтобы оно нашло откуда скачать.
2015.03.22 02:47
Я являюсь неизвестным, но очень отчаянным пользователем thinkpad’ов. Ну, желательно ещё тех самых которые ibm, но сойдёт и lenovo редакции так до x230 включительно. У меня как раз x230, но, вероятно, — это последний. Дальше так продолжаться не может ибо новые модели адский ад. Но пока у меня есть x230 то надо им пользоваться.
И вот не прошло и двух лет (ха-ха, опять шутка — прошло) как я решился настроить нормально устройства ввода.
Как все лютые любители thinkpad’ов знают их (thinkpad’ы) от других богомерзких ноутбуков отличают две вещи: хорошая, удобная раскладка и thinkpoint. Хорошей и удобной раскладки с нами больше нет, но вот thinkpoint (красная пипка) ещё пока есть. И есть богомерзкий тачпад.
Как любой приличный и религиозно стойкий пользователь thinkpad’а я раньше был глуп и отключал богомерзкий тачпад чтобы не мешал. Но вот включил и даже настроил. Настроил я всё просто и незамысловато.
Это, есстественно, единственный правильный и приемлимый способ настройки thinkpad’ов, истинно говорю. Я вот до сих пор не понял удобно ли это! Правда замечательно?!
Иксовый конфиг для тачпада:
# cat /etc/X11/xorg.conf.d/50-synaptics.conf # synclient -l | sed -e '1d' -e 's/^ \+/Option\t"/g' -e 's/ \+= /"\t"/g' -e 's/$/"/g' Section "InputClass" Identifier "evdev touchpad catchall" MatchIsTouchpad "on" MatchIsPointer "off" MatchProduct "SynPS/2 Synaptics TouchPad" Driver "synaptics" # disable cursor moving, higher value -- slower motion >_> Option "ConstantDeceleration" "10000" Option "LeftEdge" "1772" Option "RightEdge" "5468" Option "TopEdge" "1663" Option "BottomEdge" "4807" Option "FingerLow" "25" Option "FingerHigh" "30" Option "MaxTapTime" "180" Option "MaxTapMove" "248" Option "MaxDoubleTapTime" "180" Option "SingleTapTimeout" "180" Option "ClickTime" "100" Option "EmulateMidButtonTime" "0" Option "EmulateTwoFingerMinZ" "282" Option "EmulateTwoFingerMinW" "7" # Vertical & horizontal multifinger scroll, higher value -- slower motion >_> Option "VertScrollDelta" "300" Option "HorizScrollDelta" "120" Option "VertEdgeScroll" "0" Option "HorizEdgeScroll" "0" Option "CornerCoasting" "0" Option "VertTwoFingerScroll" "1" Option "HorizTwoFingerScroll" "1" Option "MinSpeed" "1" Option "MaxSpeed" "1.4" Option "AccelFactor" "0.0354673" Option "TouchpadOff" "0" Option "LockedDrags" "0" Option "LockedDragTimeout" "5000" Option "RTCornerButton" "0" Option "RBCornerButton" "0" Option "LTCornerButton" "0" Option "LBCornerButton" "0" Option "TapButton1" "0" Option "TapButton2" "0" Option "TapButton3" "0" Option "ClickFinger1" "0" Option "ClickFinger2" "0" Option "ClickFinger3" "0" Option "CircularScrolling" "0" Option "CircScrollDelta" "0.1" Option "CircScrollTrigger" "0" Option "CircularPad" "1" Option "PalmDetect" "1" Option "PalmMinWidth" "0" Option "PalmMinZ" "0" Option "CoastingSpeed" "20" Option "CoastingFriction" "50" Option "PressureMotionMinZ" "150" Option "PressureMotionMaxZ" "160" Option "PressureMotionMinFactor" "1" Option "PressureMotionMaxFactor" "1" Option "GrabEventDevice" "0" Option "TapAndDragGesture" "1" Option "AreaLeftEdge" "0" Option "AreaRightEdge" "0" Option "AreaTopEdge" "0" Option "AreaBottomEdge" "0" Option "HorizHysteresis" "28" Option "VertHysteresis" "28" Option "ClickPad" "0" EndSection
Самой первой строчкой что в комментарии можно взять текущие настройки тачпада и сохранить их в формате пригодном для X11, а при помощи synclient можно на ходу играть со значениями не перезапуская иксы каждый раз. Например:
# synclient # synclient VertScrollDelta=300 # synclient -l | sed -e '1d' -e 's/^ \+/Option\t"/g' -e 's/ \+= /"\t"/g' -e 's/$/"/g' > add_to_X11.txt
Ну а как включить этот богомерзкий тачпад вообще — читайте в виках.
2015.03.21 22:44