Личный пост Евгения Дорохина

Эти ваши интернеты очень-очень странное место, вот Bolk написал Личный пост Евгения Дорохина в своём блоге, а оказывается, Евгеша не давал разрешение делать Болку личный пост у себя в блоге! Это восхитительно!

С нетерпением жду у себя в блоге гневного комментария, Евгеша!

2015.05.06 21:20

Что происходит с людьми в этих наших интернетах?

За последнюю неделю мне дважды хотелось написать разработчикам / саппорту двух разных сайтов. Один большой, а второй нет. И в обоих случаях не нашёл ничего подобного на developer@example.com или support@example.com.

Или багтрекеры с обязательной регистрацией, или какие-то социальные сети, но не e-mail, о боже, только не e-mail.

Мир катится в неправильном направлении, неудобненько.

2015.04.30 10:40

Да здравствуют объекты!

Такое всякое интересное можно найти в этих интернетах!
20150428_214832

2015.04.28 22:50

Future Crew – Second Reality

Если когда-нибудь у меня заведётся своё кафе или какое-нибудь подобное злачное место, то целыми днями на 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

SelkBag: человеко-спальник

Увидел страшную штуку в интернете — человеко-спальник! Спальник в форме человека. Не знаю насколько это удобно, тепло или хорошо, но с трудом сдерживаюсь чтобы не купить. Я не знаю зачем, он просто сам по себе прекрасен. Самый идиотский спальник что я видел. Не говорите мне что вы можете удержаться от его покупки.

MU002GRA

2015.04.27 03:44

Выключение монитора в линуксе

Совсем недавно, буквально пару месяцев назад, я написал душераздирающий пост про программное выключение монитора в линуксе, но с тех пор прошло много времени, технологии шагнули вперед, а монитор программно всё ещё хочется выключать.

Радует, что больше не нужно сходить с ума от того что по VGA кабелю передаются управляющие команды, но всё же.

Традиционно в линуксе говорят что чтобы выключить монитор надо сделать вот такое:

# xset dpms force off

Но, знаете, у меня после этого монитор все равно включался и это немного, самую малость, бесило. Прошли годы и я всё же решил попробовать все ЧЕТЫРЕ ВОЗМОЖНЫЕ ОПЦИИ. И, вы не поверите, одна из них работает как надо! Вот уж неожидаемо!

# xset dpms force standby

Удачи! Выключайте монитор! Проваливайте из интернета!

2015.04.26 21:35

SSMTP: шлём письма с локалхоста в gentoo

Если вам когда-нибудь захочется слать письма с локалхоста, но при этом не захочется поднимать у себя весь тот ад что тесно связан с отсылкой почты, а просто захотите слать через внешний 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

XOR!

Событие! СОБЫТИЕ! СОБЫТИЕ В ЖИЗНИ!!!

Впервые заиспользовал xor!

2015.04.04 21:58

discourse.com

Регистрировался на форуме который рабоает через discourse.com:

20150402_030834

happy-oh-stop-it-you

2015.04.02 04:13

Про жаббер

Я вот в последние года полтора думаю “а не пора ли закопать стюардессу?” хитро поглядывая на жаббер.

Пожалуй, единственное что меня останавливает — нежелание оставаться один на один со скаепом.

А вы что думаете по этому поводу? Жаббер не взлетел из-за xml’а или происков массонов? Ведь даже гугл его ~год назад уже закопал.

2015.03.31 19:22

Богомерзкий flash в новой опере и хроме в линуксе

В какой-то там версии хрома много месяцев назад отвалился флеш. В новой опере тоже не очень работает. Чтобы починить нужно поставить “pepper flash”, в гентушечке ставится вот так:

# emerge -av chrome-binary-plugins

Мне пришлось синкануться чтобы оно нашло откуда скачать.

2015.03.22 02:47

Как надо настраивать устройства ввода на thinkdpad’ах

Я являюсь неизвестным, но очень отчаянным пользователем 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