среда, 31 мая 2017 г.

Мой Ноутбук и Линукс

Так получилось, что у меня по весне случается кризис. Несильный, но случается. Творческий кризис - работать не хочется совсем, руки опускаются. Даже если знаешь что надо делать, все равно работа стоит. В качестве спасения я иногда менял по весне работу. Но однажды придумал ставить себе линукс. Ну и вот с тех пор как бы повелось и теперь у меня почти всегда почти везде линукс стоит.
Недавно купил себе ноутбук для работы. Чтоб ездить с ним и чтоб можно было на кухне на диване в очередной раз развалиться во время работы. Давно хотел 17 дюймовый 4К ноут взять, а тут у ASUS появились не такие дорогие, вот и взял. ASUS VivoBook Pro N752VX, который с 4К дисплеем. Вот официальный сайт. Доставил памяти до 32Гб и поставил SSD. У него оказалось есть внутри настоящий SSD на 128, на котором винда установлена, скорее всего с интерфейсом PCI-E, но я его не нашел (не сильно и хотелось) и трогать не стал. Так что я SATA HDD заменил на SATA HDD и начал ставить на него линукс. Xubuntu. Я ее везде ставлю - она мне больше импонирует своей минималистичностью.
Установка линукс на самое новое железо это не всегда приятное занятие. Ubuntu 14.04 LTS загрузилась с флешки, но без поддержки тачпада и с плохой графикой. Ubuntu 16.04 LTS с флешки как-то совсем не загрузилась и я решил попробовать самую последнюю версию, 17.04. Не LTS. 17.04 загрузилась. И поставилась. Но в процессе загрузки с установленной версии не грузилась.
Я добавил в grub параметры для загрузки nosplash, чтоб было видно в какой момент она падает. (Для добавление параметра надо в процессе загрузки выбрать нужную строчку, нажать e и вбить параметр). И вроде как каким-то мифическим способом выяснил, что падает она в процессе загрузки иксов. Погуглил, нашел предложенный на форумах параметр загрузки nouveau.modeset=0, включил его и система загрузилась. Что странно поскольку этот параметр отключает KMS - aka Kernel mode setting - переключение режимов дисплея не в user-space, а в kernel-space. Но якобы этот параметр должен быть выпилен начиная с 2010-01-10. Ну да и пес с ним. Загрузилось, пошли странные сообщения в консоли. (Что-то типа pcieport 0000:00:1c.5:    [ 0] Receiver Error). Погуглил, добавил параметр pci=nomsi. MSI, как я понял, это возможность устройствам использовать один номер запроса на прерывание (IRQ) и должно негативно сказываться на работе системы если устройств много и на все устройства IRQ не хватает.
После успешного начала работы со своим линуксом на своем ноутбуке я поставил проприетарные драйвера nvidia. Потом поставил более свежие драйвера nvidia из ppa. В настройках ubuntu (Дополнительные драйверы aka Additional Drivers) включил параметр для использования некоего микрокода интел - Using processor microcode firmware for Intel CPUs from intel-microcode (proprietary).
Потом заметил, что система малость сильно греется. Попытался поставить TLP – Linux Advanced Power Management. Не заметил изменений, снес, поставил laptop-mode-tools. После установки laptop-mode-tools система перестала грузиться. Снес.
Потом нашел, что в ноуте установлены две видеокарты - дискретная (медленная) intel и nvidia. И типа в винде или при работе проприетарного драйвера nvidia он автоматом переключается на использование карты intel. Переключился на видеокарту intel, комп завис и отказался загружаться. Я перепугался, похимичил. Но выяснил, что переключиться обратно можно используя команду sudo prime-select nvidia. Переключился, попробовал пару других версий драйверов nvidia, выяснил, что со всеми ими система виснет при попытке переключения графики на использование карты intel. Поставил последние интеловские драйвера для видео. Изменений не произошло.
В какой-то момент выяснилось, что система не грузится при выборе пункта "Ubuntu" в grub - просто черный экран. Грузится при выборе пункта "Загрузка ubunu с дополнительными параметрами" при выборе последнего или предпоследнего ядра. Так и не понял в чем соль - разницы вроде нет никакой.
В какой-то момент выяснилось виснет при закрытии иксов (во время shutdown, что само по себе неприятно, во время Ctrl+F1). Полечилось выключением в настройках ubuntu (Дополнительные драйверы aka Additional Drivers) параметра для использования микрокода интел - Using processor microcode firmware for Intel CPUs from intel-microcode (proprietary).
Ну и еще настроил в терминале xfce Ctrl+C / Ctrl+V вместо используемых по умолчанию Ctrl+Shift+C/Ctrl+Shift+V - редактированием файла ~/.config/xfce4/terminal/accels.scm. Почему то изначально пришлось еще дополнительно сменить Ctrl+C -> Ctrl+K (например) - stty intr ^K.
Почему-то не включался NumLock по умолчанию. Не стал морочиться с lightdm, просто прописал numlockx on в .xinitrc.
Смапил клавишу отключения тачпада (touchpad disable) на клавишу XF86TouchpadToggle -
#!/bin/bash
if synclient | grep --quiet 'TouchpadOff             = 0'; then
  synclient TouchpadOff=2
  notify-send Touchpad Disabled
else
  synclient TouchpadOff=0
  notify-send Touchpad Enabled
fi
TouchpadOff=2 - это когда работает перемещение мышки тачпадом, но не работает скроллинг и клик по тапу - тачпад не мешает, но в принципе его можно использовать.
Как ни странно все остальные клавиши уже работали - даже включение подсветки клавиатуры.

Ну и еще меня раздражало отсутствие клавиши End - Home есть, а End нет. Поэтому я смапил fn+Cursor Move, которые по умолчанию используются для управления медиаплеером. Есть засада - клавиши срабатывают не на нажатие, а на отжатие - немного раздражает - xmodmap ~/.Xmodmap в файле .xinitrc. И ~/.Xmodmap
keycode 171 = End
keycode 172 = Next
keycode 173 = Home
keycode 174 = Prior
Еще есть проблемы с просыпанием после перехода в спячку. Если шнур питания подключен, то комп просыпается. Если нет, то сбрасывается и начинает загружаться.
Со скроллингом традиционный в линуксе пиздец. В каждой программе он работает по-своему. В каждом направлении он работает по-своему. Единственное, что мне понравилось в маке - это направление скроллинга. То есть на мой тупорылый взгляд он там сделан логично - ты тащишь страницу, а не ползунок и страница "следует" за твоими пальцами. Окей. В среднем на линуксе если я делаю reverse mouse для тачпада, то вверх-вниз работает как надо, влево вправо наоборот. Если я не делаю reverse, но все работает наоборот. То есть похоже горизонтальный скроллинг всегда работает наоборот и не настраивается. В хроме все наоборот, ему насрать на системные настройки. У него влево-вправо работает как надо, а вверх-вниз наоборот. Хотя не уверен по поводу хрома и горизонтальной прокрутки - так с ходу не нашел сайтов без специальной поддержки, чтоб проверить.
Такие дела. Надеюсь, что в будущем появится нормальная поддержка всего без шаманских плясок с бубном. Хотя судя по мизерному числу пользователей линукса на десктопе нормальной поддержки не будет никогда.

пятница, 29 июля 2016 г.

Spring. Хоть и неплохой, но почему я его не люблю.

Не знаю, работали ли вы со спрингом, но я внесу свои 5 копеек на тему почему я его не люблю.
В нормальной спеке а ля J2EE есть чоткая граница между интерфейсами и реализацией. При этом несмотря на казенность языка J2EE спеки в принципе ее можно прочесть и обозреть. Спринг же это монстр с кишками наружу. Да еще и с отсутствием внятного иерархичного описания. То есть у него внутри кишки перемешаны - типа херачь не хочу. И снаружи доки переписаны - точки входа и построения нормального представления нет. Все нормальные спеки древовидные потому что если так, до даже если ты не знаешь куда тебе надо попасть ты всегда знаешь куда тебе идти. В плоской структуре чтобы понять куда тебе попасть тебе надо знать все про все. Это ахтунг.
Вот простой пример. Допустим я решил что хочу что-то сделать после инициализации бинов в контейнере. Казалось бы - иди в документацию, кури оглавние и там ищи что-то типа контэйнер state machine. Как бы не хуй. Иди в ClassPathXmlApplicationContext и кури конструктор. Иниибет. Ну это как бы норм для наколенной поделки, но тут как бэ версия 4.3.2. Не какая-то там альфа на хоум пейдже васи пупкина. Это проект, который дефакто используется в более чем половине всех джавских серверных (а может и клиентских) приложений. Который изначально создавался как легковесная замена JEE, а теперь собственно призван умирающего поциента собой заменить. И эти люди еще спрашивают меня паттерны и объясняют мне, что я плохой архитектор. А сами спринг юзают.
Появление спринга было бы невозможно 20 лет назад ввиду отсутствия интернета и поисковых машин. Типичный алгоритм решения проблемы сводится к "поищу как это сделали менее волосатые собратья в интернете, на крайняк посмотрю исходники". И это еще хорошо, что он неплохо написан, и неплохо документирован. Но господа смотреть исходники для того, чтобы попользовать самый популярный джавский фреймворк - не кажется ли вам это моветоном. Мне хватает простите "исследований" "труда" моих коллег. За глаза.
В общем печалька в том, что программист в наши дни превращается в сисадмина. Работа из разряда почитай документацию и сделай как написано. Найди. Повтори. Не то, чтобы это плохо - мамы всякие нужны. Но просто если бы лично мне нравилось сисадминить, то я бы пошел в сисадмины, а не программеры.

ЗЫ: Как я уже давно начал говорить проект либо развивается, либо умирает. Спрингу нужен рефакторинг. И нехер ссать на тему обратной совместимости. Это норм, что интерфейсы меняются, особенно для проекта в котором нужно рыть исходники, чтобы понять как сделать то и се. Движуха - добро если соблюдается баланс, не дает превращаться коду в болото. Как я, опять таки, давно начал говорить, не понимаешь как это работает - делай рефакторинг. Даже беспричинный рефакторинг хорош потому что дает тебе возможность разобраться как это устроено, особенно если код хорошо покрыт хорошими функциональными тестами.

Такие дела.

четверг, 25 октября 2012 г.

Skype под Linux - расширенные возможности

Меня надысь включили в большое число обильных чатов. Выбор стоял - либо запретить все сообщения, либо перестать работать. Причем в нелинуксовой версии я заметил возможность отключать нотификации для чата.
Оказалось, что в линуксовой верси - ура - ура - такая возможность тоже есть. Причем даже чуть больше, чем просто отключить нотификации. Но, как и положено для линукса, это возможность текстовая. Оказывается в чате можно вводить текстовые комманды. Например /help. Все остальное дело техники. Понятное дело отключить нотификации можно путем ввода в чат команды
/alertsoff
. Можно для группового чата, можно для индивидуального. Более подробная информация доступна по ссылке http://www.skype.com/go/help.chathelp

пятница, 5 октября 2012 г.

Сеть

Есть у меня такая ужасная особенность - возникают в голове мысли. И как возникнут, никак из головы сами не уходят. К счастью при записании этих мыслей они "какбэ перетекают" на бумагу и уже живут там, а не в голове.

Итак иду в одноклассники. Теперь по крайней мере не придется объяснять людям где я работаю и что это такое. Что такое "похожая на JEE, но event-driven" платформа, телеком сервисы, кому они нужны и что они делают.

Вот беда, уже появились мысли и чтоб они мне не мешали в ра

*Класс* - это социальная сеть. У социальной сети есть две функции - дать возможность людям общаться и сбор информации для получения профита. В идеале (описанном в Ловце снов) информация может быть использована для тотального и при этом ненавязчивого управления конкретным индивидом и/или обществом. Для настоящего профита информация должна быть как можно более полной и должна быть должнвм образом обработана. Обработка информации - задача для яйцеголовых мужей с кафедры - ну не знаю - психологии, обработки информации и т.д. Ну например тут надо построить поведенческую модель человека, по его постам и реакциям понять что это за человек и в зависимости от задач нужным образом его подтолкнуть так или иначе, в одну или другую сторону. Но это больше академическая работа.

А вот работа по сбору информации более "жызненная". Чтобы собрать о человеке больше инфы надо предоставить ему больше сервисов. Интегрировать все со всем. Ну например. Хочет чел купить что-то, чтобы отзывы об этом "что-то" он искал не где-то, а в соц сети. Хочет найти абстрактных друзей по заданным параметрам - чтоб искал не на спец форуме, а в соц сети. Купил - расскажи о впечатлениях в соц сети.

Есть сайт - надо чтоб был Single-Sign-On с соц сети.

То есть надо сделать:
(Это сообщение добавлено позже, но по важности оно отсортировано наверху). Я вот уже почти месяц работаю в однокласниках и немножко напрягаюсь от сложившегося о сети стереотипе "на село провели интернет".
Люди общаются в сети потому что им этого не хватает в реале. А какая наиболее часто обсуждаемая темя? Новости-политика-погода ну и поянтно женщины. Женщин какбэ итак в инете хватает. А вот для наполнения сайта новостями можно было сделать дополнительный функционал на сайте.
Многим людям не хватает сервиса по релевантой выборке новостей. Раньше был сервис Google Reader - когда можно подписаться на RSS и смотреть только те новости, которые отмечают друзья. То есть позволить другим выбирать тебе новости (а также музыку, фильмы, книги).
Вот и можно то же самое замутить и рядом с кнопкой музыка добавить кнопку новости, чтоб можно было посмотреть последние новости, какие из новостей кому понравились. Обсудить, посмотреть мнения не-друзей на ту же самую новость.

Я б еще добавил виджет "интересные факты" - показ интересных фактов с сайта интересных фактов с возможностью отправлять интересный факт в ленту.
- Удобный SSO модуль для сайтов (Java / JavaScript / PHP / etc) и постараться уговорить использовать его все сайты, которые требуют логина. В первую очередь интернет магазины. Список магазинов можно взять с яндекс маркета. Это должен быть универсальный модуль, который позволяет использовать открытые стандарты типа OAuth / OpenID. Но для "well-known" сайтов типа *классники или маил или вк должны быть кнопки, которые позволят залогиниться в два клика.

- (Это наверно уже есть) Возможность создавать страничку / сайтец, форум / список рассылки / обсуждение на базе соц сети.

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

- Интернет-магазин - интеграция. Это две функции а) "я хочу купить бла-бла-бла, что посоветуете" аля кнопочка "хочу". б) "я купил бла-бла-бла и это блин круто". Вижу уже работы в этом направлении ведутся - на price.ru самая большая кнопка - "ОК класс". Можно еще посоветовать аналогично сделать инет-магаз, засосав в него все, что возможно - например китайские товары сомнительного качества по низкой цене с бесплатной (или почти) доставкой в россию. Тут главное добавить каталогизатор как в яндекс-маркете - на китайских сайтах такой функционал отсутствует.

- Плагин к браузерам. Чтоб функции ОК добавлялись к сторонним сайтам - например яндекс маркет / википедия и другим наиболее посещаемым сайтам.

- База знаний вопрос / ответ.

- Это скорее всего есть и есть у facebook и вконтакте. javascript плагин, позволяющий создать сообщество на странице.

- Да и вообще все плагины ок и вк соединить. Чтоб ставишь один (например на сайт), автоматом появляется возможность делать 2.

- Симплементить OpenSocialContainer API, дать возможность добавлять свои портлеты на страничку - как в Google Personal.

пятница, 16 марта 2012 г.

Как отличить плохого программиста от хорошего

Хороший программист отличается от плохого. Хороший программист почти любой код считает плохим (даже свой). А плохой, он нихуя не считает, говняет и говняет код помаленьку. Ему видимо вообще похуй, он просто делает свою работу. Сука.

пятница, 27 января 2012 г.

Ахтунг! Микрософт жжет

MS Windows XP при загрузке выдала окошечко, сообщающее, что она ошиблась. Ну быват, давай говорю пошлем отчет в редмонд. Отослали. Грит данных недостаточно, давайте передем ко второму шагу. Ну думаю, случается, перешел ко второму шагу. Второй шаг говорит - пиздец, я сломался. В смысле веб страничка примерно с таким содержанием: http://oca.microsoft.com/en/404.aspx?aspxerrorpath=/en/kpreupld.aspx Server Error in '/' Application. Runtime Error Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. Details: To enable the details of this specific error message to be viewable on remote machines, please create a tag within a "web.config" configuration file located in the root directory of the current web application. This tag should then have its "mode" attribute set to "Off". Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's configuration tag to point to a custom error page URL. бля, но это уже совсем пиздец. Напоминает историю о том, как в микрософте сделали компонент для борьбы с уязвимостями. И в этом компоненте обнаружили уязвимость. Ну или как у нас: для того, чтобы попасть в отдел по борьбе с коррупцией необходима взятка в размере 10 окладов борца с коррупцией.

четверг, 6 октября 2011 г.

Пидарасы из микрософта

Нет, ну я знал конечно что в микрософте трудятся пидарасы и выходцы из СССР - благословенные создатели автоваза. Но блять как же тяжко и неприятно в этом каждый раз заново убеждаться. Вчера решил распечатать отсканированный пару дней назад документ. Нажимаю правой кнопкой - печатать. Сказал, чтоб напечатал черно-бело и быстро. Этот блять ебаный гандон растянул скан на всю страницу вместо оригинального размера. Пришлось открыть gimp-ом и напечатать из него. Нет, ну я понимаю - долбоебы, кривые руки, не знаем что такое DPI и разрешение, но нахуя тогда делать. Блять, как это напоминает совок-автоваз. Вот линукс - сразу честно признался - я не в курсах. Сканера нет и модель принтера я не знаю - иди в жопу.