|
Подпишитесь на новости сайта по RSS
|
|
Главная страница
Здравствуйте!
Вы находитесь на сайте WebHamster.ru. Наш хомячок бегает по интернету в поисках интересной информации. Он собирает её по крупицам и аккуратно складывает здесь. А еще хомячок знает буквы, садится за свою маленькую пишущую машинку и сам пишет всякую ерунду. Он такой непоседа...
Новости
|
|
|
Раньше жизнь была как-то попроще. Была 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
Слежение за пользователем - оборотная сторона жизни администраторов безопасности. Но что поделаешь, если пользователи используют вверенную им технику предприятия не по назначению.
|
|
|
|
По долгу службы мне приходится работать с чудом современного юзабилити - Microsoft Outlook 2013. Этот глючный кусок кала включает в себя множество неожиданных решений, так что за несколько лет работы я каждый раз вздрагиваю, когда открываю его окно. Но ничего не попишешь - корпоративный стандарт есть корпоративный стандарт.
Самой неоднозначной вещью в Microsoft Outlook 2013 является поиск писем. Да, это банальное действие, которое в других email-клиентах решается довольно понятным способом, в Outlook сделано максимально неудобно. В результате люди годами не понимают, как блин в этом Outlook найти нужное письмо. Я вижу, что мои сотрудники часто ищут письмо вручную, и только самые продвинутые могут помочь себе сортировкой.
Чтобы пробиться сквозь джунгли корпоративного безумия, я написал для себя памятку о том, как пользоваться поиском по письмам с помощью языка запросов:
Как осуществлять поиск в Microsoft Outlook 2013
Надеюсь, кому-нибудь эта помятка тоже пригодится.
|
|
|