Собираем
информацию
по крупицам
Главная страница

Здравствуйте!

 

Вы находитесь на сайте WebHamster.ru. Наш хомячок бегает по интернету в поисках интересной информации. Он собирает её по крупицам и аккуратно складывает здесь. А еще хомячок знает буквы, садится за свою маленькую пишущую машинку и сам пишет всякую ерунду. Он такой непоседа...


Новости

MyTetra: я понял всю боль. Любители GTK и пользователи 64 бит, как я вам сопереживаю...
14-12-2017
18:28:52

До недавнего времени я жил в своем уютненьком 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-х бит.

 

Всем удачи, следите за новостями.

 


Первоначальная настройка MariaDB: получаем доступ из сторонней панели управления
13-12-2017
18:37:19

Раньше жизнь была как-то попроще. Была 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 - арканоида с бесконтактным управлением
03-12-2017
22:31:25

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

 

MoveNoid - это игра по типу классического арканоида, в которой управление битой (ракеткой) происходит с помощью графической метки. Для захвата изображения используется обычная web-камера. Метка изготавливается из куска картона с помощью лазерного принтера или черного фломастера. Особенность данного арканоида в том, что бита свободно перемещается по экрану и может наклоняться на любой угол (даже перевернуться вверх-ногами). Это вносит новые возможности в механику игры, которую  можно развивать дальше.

 

 

 

 

Код написан мною с использованием библиотеки компьютерного зрения OpenCV. Для симуляции физики полета мяча использутся физический движок Box2D. Чтобы разработка была проста и приятна, используется C++ фреймверк Qt. Код распространяется под лицензиями GPL v.3 и BSD.

 

Для того, чтобы быстро составить представление, что собой представляет игра, я записал небольшое видео:

 

 

 

 

На сайте WebHamster.Ru для игры создана официальная страничка:

 

 

Официальная сраничка MoveNoid

 

 

В настоящий момент код игры прост и не обвешан сложными абстракциями. Самое время подключиться к разработке и сделать один из пунктов Плана развития игры. Кто там не знал чем заняться? Вот вам реальный проект: весело и познавательно.

 

А я пошел отдыхать :)

 


Как я настраивал программный регулятор громкости для звуковой карты E-mu Tracker Pre USB в Linux
09-11-2017
17:39:23

Наконец-то у меня дошли руки донастроить свой домашний компьютер с операционной системой Linux Debian. Одной из нерешенных проблем было то, что не работал регулятор громкости для внешней звуковой корточки E-mu Tracker Pre USB. Вот она, красавица:

 

 

 

 

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

 

 

Как заставить работать программный регулятор громкости

для звуковой карты E-mu Tracker Pre USB в Linux

 

 

Да, это было трудно. И я надеюсь, что информация в статье поможет владельцам карточек E-mu разобраться, как можно произвести донастройку карточки в звуковой подсистеме Linux. Если, конечно, разработчики снова что-нибудь не поменяют.

 


Как купить правильный строительный уровень
07-10-2017
12:42:18

Недавно у меня появилось побольше свободного времени, и я решил заняться ремонтом. А когда делаешь ремонт, обязательно нужно иметь в хозяйстве хороший строительный уровень.

 

Раньше у меня был старый советский уровень в деревянном корпусе с утопленной колбой, в котором разглядеть пузырек почти невозможно. Одна риска сбита, горизонталь весьма условная, в общем, полный фарш. И я озаботился приобретением нового уровня.

 

Но перед тем как пойти в магазин я обчитался статьями в Интернете, и составил себе некое представление о современных реалиях рынка строительных уровней. И правильно сделал! Какой только чуши я не услышал от продавцов. Если бы я не знал заранее, что мне нужно, обязательно купил бы задорого какое-то кривое поделие и дальше мучался бы с ним. В общем, знание - сила. Поэтому я написал небольшую статью, в которой даю выжимку из того, что нужно знать про уровни:

 

 

Как выбрать уровень. Как выставить уровень в горизонталь (юстировка)

 

 

Эта статья рекомендуется к прочтению всем домашним мастерам. Если у вас уже есть уровень, и он настраиваемый, в статье написано, как его можно очень точно выставить на абсолютный горизонт.

 


Ретроспективное удаление спама в самодельной гостевой книге
12-09-2017
17:05:50

Проблема спама в гостевых книгах в интернете существует очень давно. Когда-то радикальным средством борьбы со спамом на короткое время стали всевозможные защитные картинки - капчи. Но и они перестали давать должный результат - боты быстро научились перенаправлять картинки на порносайты, где их разгадывали страждущие до клубники, затем был период ипользования дешевой человечьей силы индусов по нольцелыххрендесятых цента за картинку, а потом программы распознавания, особенно специально заточенные, научились распознавать сильно зашумленные капчи не хуже человека. Блочить спам по 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 поддерживает кумулятивные запросы.

 

Теперь спама в гостевой как не бывало. Считаю, что это очень простой и эффективный метод борьбы. Пользуйтесь на здоровье.

 


Офигительное объяснение основ грамматики английского языка
01-09-2017
21:24:35

Недавно наткнулся в Youtube на одно очень хорошее видео с очень неудачным названием "АНГЛИЙСКИЙ С НУЛЯ (Четкое понимание за 50мин)". Название неудачное потому, что видеороликов с подобным заголовком в ютубе просто миллионы. И доверия такое название не вызывает.

 

А у меня как раз проблема с грамматикой английского - я не могу толком запомнить весь этот набор правил хотя бы для шести английских времен (настоящее-прошедшее-будущее в simple и continues). Не могу толком запомнить потому, что не люблю запоминать безсистемно. А я видел, что некая система есть, но она всегда мне подавалась декларативно. Мои попытки вытянуть понимание из учителей ни к чему не приводили - они и сами, похоже, тупо зазубрили правила образования времен без понимания сути происходящего. Максимум, что я мог вытянуть, это невнятное объяснение про то что "окончание "s" перебегает вот сюда". А почему сюда а не туда - это тайна покрытая мраком.

 

И я тыкнул на это видео с мыслью "Ну давай, послушаю об основах грамматики в сотый раз, может что еще пойму, хотя особенно не надеюсь". Так вот оказалось, что этот неизвестный чувак с ником База Английского, который не называет своего имени (и я до сих пор не знаю как его зовут), разложил основы грамматики по полочкам так, как не могли все мои учителя за мои дважды процедшие курсы на уровень Elementary. Вот этот перец:

 

 

 

 

Самое главное, что он объясняет не только основы английского, но и основы лингвистики. В частности, он дает самое точное и правильное понимание термина "инфинитив" - что это такое, зачем оно вообще нужно, и какую роль инфинитив играет в английском языке. Уже только за это его надо в жопу расцеловать.

 

Вообще, по грамматике английского языка есть еще хорошее видео от Надежды Счастливой, о котором я упоминаю в своей коллекции методических материалов по практике освоени я английского. Эта дама тоже умеет объяснять, но у нее бОльший объем, и в этом видео она предметно рассматривает сразу 12 времен английского по методике "торт английской реальности".

 

Всем изучающим английский я очень рекомендую эти видеоуроки к просмотру.

 


Подключение к удаленному Git-репозитарию через SOCKS5-proxy
25-08-2017
16:32:45

Многие люди в 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

 

 

Надеюсь, кому-нибудь поможет. А вообще я никому не рекомендую работать в конторах с такими жесткими требованиями к блокировке Интернета. Вы мгновенно окажетесь в каменном веке, и станете терять свою квалификацию. А оно вам надо?

 


Как рассчитать стоимость транзакции в платежной системе Биткоин
25-08-2017
08:48:25

Я редко пользуюсь денежными переводами через Биткоин. И за изменениями в этой криптовалюте слежу от случая к случаю. Поэтому плохо ориентируюсь в стоимости транзакций Биткоина. Казалось бы, еще вчера транзакции были бесплатными или с символической стоимостью, а теперь для получения комиссии, меньшей чем у банков, нужно переводить сумму не менне чем полтыщи долларов. И ситуация каждый день меняется.

 

Для таких пользователей, как я, правильный расчет комиссии - это целая проблема. Запросто по незнанию можно поставить такую комиссию, за которую в нынешних реалиях майнеры даже не станут эту транзакцию считать. Она зависнет на несколько дней, а потом откатится как необработанная. Поэтому я составил небольшую памятку о том, как вручную и автоматически рассчитывать стоимость отчисления за транзакцию:

 

Как рассчитать стоимость отчислений за транзакцию в сети Bitcoin

 

И на последок хочу напомнить: берегите свои биткоиины и соблюдайте правила информационной гигиены. У биткоина есть все шансы стать золотом цифрового финтеха.

 


Сбор периодических скриншотов с Windows-машины с помощью Linux
15-08-2017
10:29:25

Странно, но почему-то на сегодняшний день нет вменяемого бесплатного Open Source софта для сбора периодических скриншотов. Тем не менее задача отслеживания действий ненадежного сотрудника с представлением результата "в явном виде" периодически встает перед каждым системным администратором.

 

Используя Linux в качестве рабочего инструмента, можно быстро решить такую задачу, как говорится, прямо "на коленке". И никаких закупок ПО производить не нужно. О том, как это сделать, мною была написана следующая статья:

 

 

Как сделать периодические скриншоты экрана пользователя с помощью TightVNC

 

 

Слежение за пользователем - оборотная сторона жизни администраторов безопасности. Но что поделаешь, если пользователи используют вверенную им технику предприятия не по назначению.

 


Страницы:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Далее › 

Интересное на сайте


Интерфейс и юзабилити » Оформление кода: Почему я выбрал для себя отступ в 2 пробела?

В мире программирования существует достаточно холиварная тема: "Каким должен быть отступ в коде"?   Оставим за бортом споры по теме "Форматироват...


C / C++ » LoLo Switcher - низкоуровневый переключатель клавиатуры для X11

Официальная страница / Official page(Rus)   LoLo Switcher - это низкоуровневый локальный переключатель клавиатуры для оконной системы X11. Он спо...


Игры под DOS » Star Wars Elastic

Проект игры с нестандартным резиновым интерфейсом. Этот проект написан просто из-за того, что очень хотелось пощупать что такое управление объектом, ...

RSS подписка

Подпишитесь на новости сайта по RSS

Поделиться этой страницей


Статистика


О, смотри-ка какое хорошее место. Дайте два!

Внимание!


На этом сайте разрабатывается программа MyTetra и её родственные проекты. Доступны к просмотру следующие базы знаний:

 

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean

База Аrmagedec

База SorokinRed

База Deadelf79

База Fadk

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База Duwaz

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик