|
Подпишитесь на новости сайта по RSS
|
|
Главная страница
Здравствуйте!
Вы находитесь на сайте WebHamster.ru. Наш хомячок бегает по интернету в поисках интересной информации. Он собирает её по крупицам и аккуратно складывает здесь. А еще хомячок знает буквы, садится за свою маленькую пишущую машинку и сам пишет всякую ерунду. Он такой непоседа...
Новости
|
|
|
До недавнего времени я жил в своем уютненьком 32-битном мирке под Линуксом, вел там разработку PIM-менеджера MyTetra, и меня все устраивало. В конце концов, фреймверк Qt, на котором написана MyTetra - вполне себе кросс-платформенный. Тестированием, кроме как в KDE4 в 32-х битном Debian и в Windows 7 32/64 бит, я не занимался.
Но вот недавно я переехал на Debian 9 с архитектурой x86-64. Да, пакетов KDE4 в этом Дебиане уже нет. Майнтейнеры дистрибутива предлагают кушать KDE5. Поставил я эту пятую версию, и продержался на ней целых три дня. Теперь я точно знаю, что KDE скатился в сраное гуано. Версия 4 уже была малоюзабельным поделием, но я ее как-то докрутил, и даже сделал свою олд-стайловую тему Redmond-125, в общем, смог заставить себя пользоваться. Но пятая версия - это апофеоз глюков и странных дизайнерских решений. Кажется, что авторы KDE вообще забыли про то, что Desktop Enviroment - это повседневный инструмент, который должен четко и быстро работать, а не глючить и залипать на отрисовке. Вместо этого авторы KDE5 пилят какие-то свистоперделки, совершенно забив на базовую функциональность.
Помятуя, что один мой товарищ без ума от Linux Mint и MATE, я решил поставить эту MATE. И вроде бы все устраивало, но ровно до тех пор, пока я не запустил свою MyTetra. Пользоваться в GTK-окружении Qt-программой оказалось практически невозможным. Почему? А вот почему:
1. Разлезлась верстка элементов управления. Фирменные GTK-шные широченные отступы между кнопками превратили насыщенный интерфейс MyTetra в какую-то странную программу, у которой очень мало места непосредственно для текстовой информации. Не помогали даже кнопки сворачивания-разворачивания тулбаров - места для текста все равно осталось катастрофически мало. Большие вертикальные отступы в списках и дереве заставили меня раза в три больше крутить колесиком, чтобы добраться до нужного элемента. Это кошмар. Попытка подобрать GTK-тему ни к чему не привела: тем в MATE и GNOME дохренищща, но нет ни одной компактной. Точнее, попытки создать компактную тему есть, но они все недоделанные. То цвета сливаются, то границ не видно, то шрифты слипаются, и это все на обычных GTK-приложениях, о Qt я вообще не говорю.
2. В GTK-среде почему-то по-умолчанию активной кнопкой считается кнопка Cancel, а не ОК. В результате все мои моторные навыки не позволяли мне совершать основные действия с клавиатуры. Например, при создании записи можно нажать Ctrl+Enter, и запись будет записана. Записана она будет в Qt-based средах. А в GTK-based будет нажата отмена, и все что пользователь успел напечатать - улетучится. Мне говорили об этом пользователи, но я не мог толком понять при каких условиях это происходит. И вот, пожалуйста, - условием является запуск в GTK среде. В принципе, в исходниках исправляется это быстро, но сам факт...
3. По неизвестным мне причинам в MyTetra не отрисовываются надписи в центре области поиска. Специально для версии 1.42 я сделал несколько надписей, которые в зависимости от ситуации должны помогать пользоватлю понимать, как проходит поиск. В GTK эти надписи просто не отображаются. Это обычные QLabel, и что может глючить - ума не приложу.
Далее проблемы, обнаруженные в 64-битной сборке.
4. В области текста записи криво работают кнопки PgUp и PgDn. Вместо пролиствания одной высоты окна редактирования, происходит двойное пролистывание. Очень это дело неудобно: вместо того чтобы быстро подняться.опуститься к ближайшему тексту, "улетаешь" курсором далеко, и теряешься, ибо непонятно, где ты находишься.
5. Встроенный менеджер закачки, который используется для закачки картинок в текст и при прикреплении файлов из интернета, не качает данные с HTTPS-сайтов. Я сначала подумал, что виной тому просроченные сертификаты на сайтах, но нет: на 64-х битах используемые мной стандартные Network-объекты Qt тупят при работе с Secure-протоколом. На 32-х битах такой проблемы нет.
6. Запомненные координаты окна при каждом запуске съежжают на несколько пикселей. Тут надо разбираться, почему так. Видимо, это какое-то проявление новых оконных менеджеров, ведь раньше у меня такого не было ни в Linux, ни в Windows.
7. Ну, и как вишенка на торте, стандартный скрипт запуска MyTetra, не может запустить программу в 64-х битной среде. Проблема возникает в момент, когда запуск происходит не из каталога, где лежит скрипт запуска и бинарник. Например, при запуске с ярлыка. Пользователи мне об этом говорили, но я не мог поверить, что такая платформонезависимая вещь, как исполнение bash-скрипта, может отличаться для разных архитектур. Тем не менее, это так.
Отказаться от 64-х бит, в принципе, невозможно, да и ненужно. А вот от GTK я отказался с радостью, установив среду LxQt. Да, она немного глючноватая, да, в ней иногда пропадает рабочая панель в моменты, когда GTK-based софт пытается быстро переключить свои окна. Но по своей концепции это очень вменяемый проект, и я ему желаю всяческого дальнейшего развития.
А что же MyTetra? Ближайшая цель - это исправление косяков, которые вылезли в 64-х битах. Проблемы, возникающие в GTK-среде я тоже смогу скомпенсировать в Qt-коде, во всяком случае надеюсь на это. Плюс еще надо исправить несколько бажиков, которые проявились в версии 1.42.
Поэтому следующий выпуск MyTetra будет багфикс-релизом, это уже решено. Кроме того, новый релиз будет только под платформу x86-64, так как все последние версии Qt под Linux (и версия 5.9.x в том числе) давно уже выпускаются только в режиме 64-х бит.
Всем удачи, следите за новостями.
|
|
|
|
Раньше жизнь была как-то попроще. Была OpenSource база данных MySql, потихоньку писалась и развивалась. Потом появились злые капиталисты, забрали себе MySql и сказали: а теперь вам, дорогие нищеброды достается форк вашего творения. Только не вздумайте его называть MySql, а то засудим! Сообщество почесало голову, и назвало форк MariaDB.
Всё бы хорошо, но вокруг MySql исторически сложилась довольно обширная инфраструктура. Куча операционных систем со своими башевыми, питоновскими и перловскими скриптами построена исходя из канонического названия этой базы данных. В результате, на сегодняшний день имеется некий бардак в наименовании исполняемых файлов, пакетов, обозначениях версий. И процесс переименования до сих пор не завершен.
Недавно я перешел на новый 64-х битный Debian 9, и снова столкнулся с трудностями при развертывании MySql/MariaDB базы данных. Базу данных я планировал использовать для развертывания App Advanced приложения из стандартной поставки Yii 2. Проблема оказалась в том, что невозможно было подключиться к серверу БД даже зная пароль SQL-пользователя root. Трудности я вмеру своей криворукости преодолел, о чем написал статью:
Задание пароля SQL-пользователя root для MariaDB (MySQL) в Debian 9
О проблеме подключения к новой дефолтной настройке MariaDB в рунете очень мало материалов. Надеюсь, кому-нибудь эта статья поможет сберечь время и потратить его на более продуктивные вещи.
|
|
|
|
Высокие технологии все плотнее входят в нашу жизнь. А компьютерное зрение уже давно не является чем-то непостижимым. Качество современной бытовой компьютерной техники уже позволяет делать "на коленке" то, что раньше можно было реализовать только на специализированных устройствах.
MoveNoid - это игра по типу классического арканоида, в которой управление битой (ракеткой) происходит с помощью графической метки. Для захвата изображения используется обычная web-камера. Метка изготавливается из куска картона с помощью лазерного принтера или черного фломастера. Особенность данного арканоида в том, что бита свободно перемещается по экрану и может наклоняться на любой угол (даже перевернуться вверх-ногами). Это вносит новые возможности в механику игры, которую можно развивать дальше.
Код написан мною с использованием библиотеки компьютерного зрения OpenCV. Для симуляции физики полета мяча использутся физический движок Box2D. Чтобы разработка была проста и приятна, используется C++ фреймверк Qt. Код распространяется под лицензиями GPL v.3 и BSD.
Для того, чтобы быстро составить представление, что собой представляет игра, я записал небольшое видео:
На сайте WebHamster.Ru для игры создана официальная страничка:
Официальная страничка MoveNoid
В настоящий момент код игры прост и не обвешан сложными абстракциями. Самое время подключиться к разработке и сделать один из пунктов Плана развития игры. Кто там не знал чем заняться? Вот вам реальный проект: весело и познавательно.
А я пошел отдыхать :)
|
|
|
|
Наконец-то у меня дошли руки донастроить свой домашний компьютер с операционной системой Linux Debian. Одной из нерешенных проблем было то, что не работал регулятор громкости для внешней звуковой корточки E-mu Tracker Pre USB. Вот она, красавица:
В течении года я периодически возвращался к решению этой проблемы, но разобраться до недавнего времени не мог. Задача оказалась нетривиальной. Да и в рунете практически нет специалистов, которые бы знали что и как надо делать. В общем, путем проб, ошибок и чтения ангнлонета я потихоньку нащупал метод настройки программного регулятора. И я очень рад, что он наконец привел к нужному результату. По итогам изысканий я написал следующую статью:
Как заставить работать программный регулятор громкости
для звуковой карты E-mu Tracker Pre USB в Linux
Да, это было трудно. И я надеюсь, что информация в статье поможет владельцам карточек E-mu разобраться, как можно произвести донастройку карточки в звуковой подсистеме Linux. Если, конечно, разработчики снова что-нибудь не поменяют.
|
|
|
|
Недавно у меня появилось побольше свободного времени, и я решил заняться ремонтом. А когда делаешь ремонт, обязательно нужно иметь в хозяйстве хороший строительный уровень.
Раньше у меня был старый советский уровень в деревянном корпусе с утопленной колбой, в котором разглядеть пузырек почти невозможно. Одна риска сбита, горизонталь весьма условная, в общем, полный фарш. И я озаботился приобретением нового уровня.
Но перед тем как пойти в магазин я обчитался статьями в Интернете, и составил себе некое представление о современных реалиях рынка строительных уровней. И правильно сделал! Какой только чуши я не услышал от продавцов. Если бы я не знал заранее, что мне нужно, обязательно купил бы задорого какое-то кривое поделие и дальше мучался бы с ним. В общем, знание - сила. Поэтому я написал небольшую статью, в которой даю выжимку из того, что нужно знать про уровни:
Как выбрать уровень. Как выставить уровень в горизонталь (юстировка)
Эта статья рекомендуется к прочтению всем домашним мастерам. Если у вас уже есть уровень, и он настраиваемый, в статье написано, как его можно очень точно выставить на абсолютный горизонт.
|
|
|
|
Проблема спама в гостевых книгах в интернете существует очень давно. Когда-то радикальным средством борьбы со спамом на короткое время стали всевозможные защитные картинки - капчи. Но и они перестали давать должный результат - боты быстро научились перенаправлять картинки на порносайты, где их разгадывали страждущие до клубники, затем был период ипользования дешевой человечьей силы индусов по нольцелыххрендесятых цента за картинку, а потом программы распознавания, особенно специально заточенные, научились распознавать сильно зашумленные капчи не хуже человека. Блочить спам по IP теперь практически невозможно - спамеры закупают за копейки милионные пулы рандомных IP адресов, так что каждое новое сообщение будет приходить с разных айпишников.
В настоящее время бороться со спамом можно только комплексными мерами. Необходимо создать несколько слоев защиты: надо прикрутить капчу; написать несколько фильтров грубой аналитики, которые будут отсеивать сообщения с явными признаками спама; надо сделать хотя бы примитивный учет поведенческих факторов с привязкой к IP адресам, чтобы отсеивать мамкиных спамеров; надо сделать проверки по международным антиспамовым базам, например сделать защиту от спама с помощью stopforumspam.com.
По моим наблюдениям, последний пункт - самое мощное средство борьбы, но и оно работает неэффективно, если на сайт натравливается новая рекламная кампания, которая еще не успела набрать отрицательную статистику на ресурсах типа stopforumspam.com. И тут необходимо городить еще один слой защиты гостевой книги, который я называю "ретроспективное удаление спама".
Идея очень проста: проверять добавляемые сообщения нужно не только в момент добавления, но и периодически уже после того, как они появились в гостевой. Да, возможно спам-сообщения будут некоторое время висеть в гостевой, пока stopforumspam.com не накопит статистику, но как только это будет сделано (а делается это за пару часов), спам-сообщения будут автоматически удалены.
Такой механизм контроля спама хорошо подходит к редко модерируемым сайтам. Например, на этом сайте я имею возможность раз в пару недель проверять гостевую, и за это время в гостевой скапливается некоторое количество спам-сообщений, пробившихся через фильтры. Ретроспективное удаление в этом случае - единственный выход. И вот недавно я прикрутил примерно такой PHP код:
// Ретроспективное удаление спама - проверяются уже имеющиеся записи гостевой private function retrospectSpamCheck() { $days=3; // Чтобы снизить нагрузку на базу,
// проверяются только записи, добавленные
// в указанное последнее количество дней
$edgeTime=time()-$days*3600*24;
$this->db->select('id, name, email, ip'); $this->db->where('time >', $edgeTime); $query=$this->db->get('guest_book'); $messages=$query->result_array();
foreach($messages as $message) { if($this->isSpam($message['name'],
$message['email'],
$message['ip'])) { $this->db->where('id', $message['id']); $this->db->delete('guest_book'); } } }
// Определение наличия спама через stopforumspam.com
function isSpam($name, $email, $ip) { try { $data = unserialize( file_get_contents(
'http://www.stopforumspam.com/api?&email='.
urlencode($email).
'&username='.urlencode($name). '&ip='.urlencode($ip). '&f=serial'));
// Если сервис StopForumSpam не отвечает if($data===false) return false;
if( isset($data['email']['appears']) and
isset($data['email']['confidence']) ) if($data['email']['appears']!=0 and
$data['email']['confidence']>=70) return true; // Email в базе спаммеров
if( isset($data['ip']['appears']) and
isset($data['ip']['confidence']) ) if($data['ip']['appears']!=0 and
$data['ip']['confidence']>=70) return true; // IP в базе спаммеров
return false; } catch (Exception $e) { return false; } }
Конечно, здесь есть место для оптимизации, например, вместо нескольких вызовов delete в цикле, можно сначала собрать ID записей гостевой книги, а потом удалить их одним SQL-запросом. И спам через stopforumspam.com можно детектить по другим признакам, а так же учесть, что вместо нескольких запросов API stopforumspam.com поддерживает кумулятивные запросы.
Теперь спама в гостевой как не бывало. Считаю, что это очень простой и эффективный метод борьбы. Пользуйтесь на здоровье.
|
|
|
|
Недавно наткнулся в Youtube на одно очень хорошее видео с очень неудачным названием "АНГЛИЙСКИЙ С НУЛЯ (Четкое понимание за 50мин)". Название неудачное потому, что видеороликов с подобным заголовком в ютубе просто миллионы. И доверия такое название не вызывает.
А у меня как раз проблема с грамматикой английского - я не могу толком запомнить весь этот набор правил хотя бы для шести английских времен (настоящее-прошедшее-будущее в simple и continues). Не могу толком запомнить потому, что не люблю запоминать безсистемно. А я видел, что некая система есть, но она всегда мне подавалась декларативно. Мои попытки вытянуть понимание из учителей ни к чему не приводили - они и сами, похоже, тупо зазубрили правила образования времен без понимания сути происходящего. Максимум, что я мог вытянуть, это невнятное объяснение про то что "окончание "s" перебегает вот сюда". А почему сюда а не туда - это тайна покрытая мраком.
И я тыкнул на это видео с мыслью "Ну давай, послушаю об основах грамматики в сотый раз, может что еще пойму, хотя особенно не надеюсь". Так вот оказалось, что этот неизвестный чувак с ником База Английского, который не называет своего имени (и я до сих пор не знаю как его зовут), разложил основы грамматики по полочкам так, как не могли все мои учителя за мои дважды процедшие курсы на уровень Elementary. Вот этот перец:
Самое главное, что он объясняет не только основы английского, но и основы лингвистики. В частности, он дает самое точное и правильное понимание термина "инфинитив" - что это такое, зачем оно вообще нужно, и какую роль инфинитив играет в английском языке. Так же он объясняет что такое грамматическая нагрузка. Уже только за это его надо в жопу расцеловать.
Вообще, по грамматике английского языка есть еще хорошее видео от Надежды Счастливой, о котором я упоминаю в своей коллекции методических материалов по практике освоени я английского. Эта дама тоже умеет объяснять, но у нее бОльший объем, и в этом видео она предметно рассматривает сразу 12 времен английского по методике "торт английской реальности".
Всем изучающим английский я очень рекомендую эти видеоуроки к просмотру.
|
|
|
|
Многие люди в IT-среде давно уже привыкли к наличию прямого доступа в интернет, и о временах повального использования провайдерами PROXY-серверов вспоминают с большой долей иронии. А некоторые даже не застали этих замечательных решений, популярных на заре интернета. Но не так дела обстоят в корпоративном секторе: борьба за мифическую безопасность порождает странные корпоративные требования. Благодаря им, привычная работа разработчика в сети Интернет становится невозможной, и человеку приходятся искать самые нетривиальные пути обхода результатов бурной фантазии эффективных менеджеров.
Ситуация: вы находитесь в сети с заблокированным NAT, корпоративный Proxy пускает только на отраслевые сайты по белому списку, и в этом списке GitHub.com, конечно, не значится. Вам нужно заполучить доступ ко всему интернету и еще заставить работать Git. Причем нужно это сделать так, чтобы без ввода логина-пароля никаких подключений не создавалось, а при установке соединения на рабочем компьютере небыло признаков подключения к интернету (чтобы работал только специально отведенный для Интернета браузер и консольный git). Понятно, что в такой ситуации шансов заполучить Интернет практически нет.
Но вам повезло: у вас чудом появился SSH-доступ к Linux-машине, на которой есть человеческий Интернет. Как организовать скрытый доступ к всемирной паутине? Самый простой способ - сделать между рабочей станцией и Linux-машиной VPN-соединение. Но при установке такого соединения Интернет появится во всех браузерах и всех программах, а не только в специально сконфигурированных. А это палевно.
Поэтому нужно извращаться более тонко, например через SOKCS5-proxy, который умеет создавать консоль Putty, заворачивая траффик в SSH. Заставить браузер FireFox работать через эту конфигурацию достаточно просто. А вот о том, как можно настроить возможность работы Git через SOCKS5-proxy с удаленным репозитарием на GitHub, информации в интернете практически нет. Поэтому я написал памятку о том, как настраивать доступ Git к внешнему миру в таких сложных условиях:
Как сделать подключение к репозитарию Git через Socks Proxy
в условиях отсутствия DNS
Надеюсь, кому-нибудь поможет. А вообще я никому не рекомендую работать в конторах с такими жесткими требованиями к блокировке Интернета. Вы мгновенно окажетесь в каменном веке, и станете терять свою квалификацию. А оно вам надо?
|
|
|
|
Я редко пользуюсь денежными переводами через Биткоин. И за изменениями в этой криптовалюте слежу от случая к случаю. Поэтому плохо ориентируюсь в стоимости транзакций Биткоина. Казалось бы, еще вчера транзакции были бесплатными или с символической стоимостью, а теперь для получения комиссии, меньшей чем у банков, нужно переводить сумму не менне чем полтыщи долларов. И ситуация каждый день меняется.
Для таких пользователей, как я, правильный расчет комиссии - это целая проблема. Запросто по незнанию можно поставить такую комиссию, за которую в нынешних реалиях майнеры даже не станут эту транзакцию считать. Она зависнет на несколько дней, а потом откатится как необработанная. Поэтому я составил небольшую памятку о том, как вручную и автоматически рассчитывать стоимость отчисления за транзакцию:
Как рассчитать стоимость отчислений за транзакцию в сети Bitcoin
И на последок хочу напомнить: берегите свои биткоиины и соблюдайте правила информационной гигиены. У биткоина есть все шансы стать золотом цифрового финтеха.
|
|
|
|
Странно, но почему-то на сегодняшний день нет вменяемого бесплатного Open Source софта для сбора периодических скриншотов. Тем не менее задача отслеживания действий ненадежного сотрудника с представлением результата "в явном виде" периодически встает перед каждым системным администратором.
Используя Linux в качестве рабочего инструмента, можно быстро решить такую задачу, как говорится, прямо "на коленке". И никаких закупок ПО производить не нужно. О том, как это сделать, мною была написана следующая статья:
Как сделать периодические скриншоты экрана пользователя с помощью TightVNC
Слежение за пользователем - оборотная сторона жизни администраторов безопасности. Но что поделаешь, если пользователи используют вверенную им технику предприятия не по назначению.
|
|
|