|
Подпишитесь на новости сайта по RSS
|
|
Главная страница
Здравствуйте!
Вы находитесь на сайте WebHamster.ru. Наш хомячок бегает по интернету в поисках интересной информации. Он собирает её по крупицам и аккуратно складывает здесь. А еще хомячок знает буквы, садится за свою маленькую пишущую машинку и сам пишет всякую ерунду. Он такой непоседа...
Новости
|
|
|
На протяжении многих месяцев я потихоньку дорабатываю свой PIM-менеджер MyTetra. Через электронную почту меня постоянно спрашивают: когда уже будет очередной релиз? Отвечаю на страницах своего сайта сразу и всем: релиз будет тогда, когда доведу до ума все уже заложенные в код нововведения и исправлю известные баги и проблемы.
И делов в разработке еще немало. Каждое нововведение требует многих (и точечных и глобальных) доработок кода.
Например, в новой версии будет настройка горячих клавиш. Она уже есть и уже работает, но, например, в ней нет проверки на повторяемость клавиатурных сочетаний. Нужно время, чтобы это доделать.
В новой версии будет поддержка формул. Она уже сделана, но нужно дорабатывать окно ввода формулы, сделать справку по языку описания формул, доработать настройки формул. Кроме того, хотелось бы, чтобы при копировании, например, с Википедии, формулы определялись как формулы, и отрисовывались с правильным размером, а не как сейчас гигантскими векторами.
Стандартный для Qt базовый класс редактора QTextEdit время от времени изменяется, и в нем в каждом релизе Qt появляются различные особенности, которые влияют на визуальный редактор в MyTetra. Из-за этого, при форматировании текста, появляются разные раздражающие глючки и несуразности, которые очень сложно компенсировать. Релиз будет тогда, когда я устраню хотя бы основные накопившиеся недостатки в редакторе.
Появилась возможность редактировать панель кнопок редактора (ранее это делалось путем редактирования конфиг-файла). Этот режим тоже надо дорабоатывать: сделать возможность применять изменения без перезагрузки программы, доработать перемещение разделителей.

Вносимые в код изменения иногда косвенно влияют на другие части кода. Например, у меня все никак не дойдут руки исправить пункт контекстного меню при правом клике мышкой на картинке. Сейчас там написано "Вставка изображения", хотя эта надпись должна быть "Редактирование свойств изображения", и то же самое касается и кнопки добавления/редактирования картинки (с ёлочкой и солнышком). Исправление нетривиальное, так как проблема появилсь после ввода системы горячих клавиш и соответсвующих действий, и в нее нужно еще добавлять контекстную зависимость, в данном случае - выбрана ли картинка или идет просто редактирование текста.
Из важных доделок в MyTetra должен упомянуть о том, что в GIT-ветке experimental решена проблема крэша приложения при копировании веток, которая сильно проявлялась у Windows-пользователей. Видимо, из-за особенностей компилятора и получаемого бинарника, она практически не воспроизводилась в Linux-окружении, и наконец мне ее помогли отследить. Проблема решена в версии v.1.44.78, можно самостоятельно собирать из исходников на Qt 5.13.
В общем, работа над новой версией MyTetra потихоньку идет. А релиз появится как только так сразу. Следите за новостями.
|
|
|
|
В предыдущей новости я обещал показать решение китайской задачки, которую не смог решить Алексей Савватеев. Сегодня конкурс закончился, и я могу показать свой способ решения.
Напоминаю, что для вычислений использовался Open Source пакет SMath, потому что мне совсем не интересно сокращать и упрощать математические выражения, если для решения задачи таковое не требуется. Для отрисовки геометрических иллюстраций использовался Inkscape, а вся работа сделана в Debian Linux.
Решение китайской задачки
Говоря кратко, эту задачу нужно было решать через углы, вычисляя площадь секций, а не пытаться вычислить площадь хитрых фигур, которые образуются за пределами искомых областей.
Как написали организаторы, пришло 150 решений, из них 35 правильные и близкие друг другу по степени изящности. Различия правильных решений были слишком незначительны, чтобы на их основе определить победителя. Потому решили присудить победу человеку, приславшему правильное решение раньше других. Им стал некий Григорий Постников.
В качестве утешительного приза организаторы дали приглашение в закрытый Telegram-чат "с крутыми профессионалами из Маккинзи, BCG, Яндекса, Майкрософта и др. компаний". Что это за Маккинзи и БЦГ я понятия не имею, а вот про профобъединение таксистов и производителей клавиатур ранее слыхал. О чем разговаривать с этими творческими личностями, не могу даже представить.
В любом случае, сайт webhamster.ru поздравляет победителя конкурса!
UPD: На ютубчике наконец-то появилось видео с разбором задачки. Итоговая площадь у них получилась 0.2928 квадратных у.е. В моем решении площадь составляет 1.1711 квадратных у.е. А все потому, что я считал исходя из единичного радиуса, а в ролике считали исходя из единичного диаметра. Поэтому, в моем случае, площадь в 4 раза больше:
0.2928 * 4 = 1.1712
что соответствует привильному решению.
|
|
|
|
Недавно на Youtube появилось видео, в котором известный математик и популяризатор науки Алексей Савватеев решает различные задачки, взятые с собеседований в крупные инженерные и IT компании. Мастер-класс по решению в реальном времени таких задач впечатляет, мне всегда было интересно посмотреть как такие задачи решают подготовленные люди, потому что среди моего окружения таких людей нет. Интрига в том, что среди задач попался "засланный казачок" - задачка для китайской средней школы, которую маэстро с наскоку не одолел.

Я ни разу не математик, зато находился в более выгодных, чем у Савватеева, условиях: с кружкой чая на диване. У меня было время спокойно поразмыслить, а заодно появился повод поковыряться с бесплатной кросс-платформенной системой компьютерной алгебры SMath Studio, которая, кстати, может стать Open Source, если автор насобирает запланированную сумму в долларох (обсуждение о возможности открытия исходников ведется давно). В общем, с помощью Linux, InkScape и SMath Studio я эту задачку решил.

Алексей Савватеев и авторы Youtube-канала Fless объявили конкурс на решение этой задачки, и результаты будут доступны 20 ноября 2019 г. Я намеренно не вставил полноразмерную картинку решения задачи, и опубликую свое решение после подведения результатов. Сейчас я даже не знаю, правильно ли я ее вообще решил, потому что давно такими вещами не занимался. В любом случае, какой-то разбор присланных решений логично было бы сделать.
Будем посмотреть.
|
|
|
|
Недавно я закончил написание обзорной статьи о том, какими книгами я пользуюсь при ведении разработки на языке C++. У каждого программиста на этом языке есть своя библиотека книг, хранимая, как минимум, в электронном виде, и как максимум - в бумажном. Я решил написать про свои книги, чтобы помочь новым пользователям этого языка быстрее сориентироваться в литературе по C++ на российском книжном рынке.
Небольшая выдержка из статьи:
"...Мое отношение к языку C++ весьма потребительское: я отношусь к нему просто как к надежному инструменту, который может обеспечить долгосрочное и относительно беспроблемное существование кода разработок. И в разработке меня больше интересует организация структуры приложения, объектно-ориентированная декомпозиция предметных областей, принципы снижения сложности разрабатываемой системы. Я не храню в голове тонкости синтаксиса языка, если редко использую ту или иную возможность, так как информацию об этом всегда можно посмотреть в справочнике. Новые фишки языка я использую только тогда, когда осознаю их действительную необходимость и начинаю понимать, что они из себя представляют. У меня очень утилитарный подход к разработке: меня прежде всего интересует доведение очередного дела до логического конца вместо теоретической возможности сделать лучше, путем переписывания половины проекта с учетом новых возможностей. Другими словами, в своей работе я использую понятное мне подмножество языка, и медленно дрейфую в ту сторону, куда движется индустрия. С учетом вышесказанного, у меня и сформировался тот набор книг, про которые я буду рассказывать..."
Непосредственно сама статья на сервисе MyTetra Share:
Книги по C++, которые меня выручают
Надеюсь, эта информация может помочь пользователям, которые задаются вопросом "Что мне почитать по C++?". А кого-то может уберечь от разочарования, возникающего при изучении этого непростого языка программирования.
|
|
|
|
Периодически я выкладываю на своем сайте разную информацию о проектах, в которых я принимаю участие. Это позволяет мне иметь летопись моих айтишных разработок, которые были доведены до стадии продакшена, и немного успокаивает мое самолюбие: наверно, каждому программисту важно, чтобы его деятельность была хоть как-то заметна на просторах Всемирной паутины.
В настоящий момент я занимаюсь разработкой одного очень интересного проекта QrCall.org. Это онлайн-сервис, который позволяет вызывать или оповещать человека посредством QR-кода. В настоящий момент оповещения работают через следующие каналы связи:
- Прямым телефонным звонком (голосовой робот);
- Через Email;
- Через мессенджер Telegram.
Вот пара сценариев использования этого сервиса. Человек не хочет "светить" свой телефонный номер под стеклом машины. Однако он хочет иметь возможность вызова его к своей машине. Подключить у мобильного оператора второй телефонный номер, специально для машины? Как это банально... Дерзкое и неожиданное решение - оставить под стеклом QR-код, при наведении на который откроется страница сайта QrCall.org с кнопкой "Вызвать".
Важная особенность: в QR-коде нет номера телефона владельца, это просто случайно сгенерированный идентификатор. Тем самым достигается сохранность телефонного номера пользователя.
Второй сценарий - виртуальный домофон. Этот сервис предназначен для строений, в которых есть закрываемая входная дверь, но нет домофона. Вместо домофона можно вывесить QR-код, с помощью которого будет открываться Web-страница входа в здание, на которой, как и на обычном домофоне, можно ввести номер квартиры. Если хозяин квартиры подключен к данному виртуальному домофону, ему будут поступать уведомления по всем каналам связи.
Ниже показан набор скриншотов этого сайта:

А вот как выглядит личный кабинет:

Полный размер
В проекте приходится заниматься всеми технологиями, которые используются в разработке и продакшене: PHP, Laravel, PhpUnit, Bootstrap, Composer, Npm, MySQL, Git, Sip-телефония,Mailgun, API Telegram, интернет-эквайринг, бэкапы, SSL-сертификаты... По сути, пришлось выступить в роли создателя информационной системы из 32 таблиц, написав первую боевую версию за полтора месяца. Мне, как специалисту по C++, Qt, QML этот прыжок дался нелегко, но тем больше мне хочется показать, что в итоге получилось:

Я не знаю, выстрелит ли этот проект в дальнейшем, судьбы стартапов неисповедимы. Но как и я, так и заказчик, получили на этом проекте много бесценного опыта. При всех раскладах, это неоспоримый плюс.
|
|
|
|
Новость немного запоздалая, но опубликовать её таки нужно. Я не всегда пишу о своей работе только на своем сайте, иногда возникает необходимость публиковаться на сторонних ресурсах.
В середине лета я, по просьбе своего работодателя, написал статью о том, как разрабатывается наш новый проект QrCall.org. Этот проект релизует вызов и оповещение пользователей о разных событиях через различные каналы связи: Email, телефонию, Telegram; а чтобы достучаться до нужного человека, используется безопасный QR-код.
Нужно было сделать, так сказать, взгляд изнутри. Я предупредил, что статья может не понравиться, но работодатель проповедует принцип "даже плохой пиар - это хороший пиар", так что статья была опубликована как есть:
Бытие современного фуллстек-разработчика
Эта статья раскрывает подробности о том, как строится разработка нового проекта в небольших компаниях. Там очень много технических подробностей, много спорных моментов, душевные терзания о том, как совместить в одной голове C++ и PHP, в общем, есть всё, что нужно для запуска обсуждения. Статья была воспринята аудиторий Хабара положительно, лучшего невозможно было и желать.
Кто еще не успел насладиться моим эпистолярным стилем - бегите скорее читать.
|
|
|
|
Давно хотел написать, но что-то все не было времени. Сейчас исправляюсь.
Итак, с некоторых пор появился человек под ником gee12, который занимается Java-разработкой под платформу Android. Он написал Андроид-клиента MyTetroid (доступен в Google Play), работающего с базой данных менеджера накопления информации MyTetra.
Описание
В настоящий момент данная программа скорее демонстрационная, но в ней уже можно просматривать базу данных. Что самое интересное, товарищ gee12 заморочился, и сделал поддержку кастомной криптографии. Для этого он портировал библиотеку RC5Simple с C++ на Java. Благодаря этому имеется возможность просматривать как открытые, так и зашифрованные записи. С криптографией есть небольшие проблемы: похоже, что Java-библиотека не всегда корректно работает с некоторыми инициализирующими векторами, поэтому некоторые базы данных с зашифрованными ветками этот клиент не открывает. Однако эту проблему можно обойти, сделав перешифровку всей базы данных в самой MyTetra.
В настоящий момент актуальна версия MyTetroid 1.7. Программа распространяется под лицензией GPL v.3. Вот какие возможности она предоставляет:
- Древовидная структура веток, как в оригинальной программе
- Список записей в ветках и прикрепленных файлов к записям
- Просмотр (а не редактирование) содержимого записей
- Расшифровка закрытых веток, записей и файлов
- Открытие прикрепленных файлов и каталога записи
- Некоторые опциональные возможности:
- Выбор пути к хранилищу данных
- Хранение пароля локально на устройстве или спрашивать постоянно
- Выбор подсветки записей с файлами
- Формат отображения даты/времени создания записей
- Использование временного каталога для расшифровки файлов
- Запись логов в файл
Скриншоты
Главная страница приложения выглядит вот так:

Экран настроек выглядит так:

Экран просмотра содержимого записи:

Видно, что работа проделана большая, и автор MyTetra благодарит автора MyTetroid за его нелегкий труд.
Ссылки
Страница программы MyTetroid на сайте разработчика:
https://gee12.space/mytetroid/
Репозитарий на GitHub:
https://github.com/gee12/MyTetroid
Установка через Google Play:
https://play.google.com/store/apps/details?id=com.gee12.mytetroid
|
|
|
|
Уважаемые посетители сайта WebHamster.Ru и пользователи MyTetra Share! В настоящий момент у сервера хостинга iHor.ru, на котором размещен этот сайт, возникли какие-то необъяснимые проблемы. Да вчерашнего дня аптайм (время непрерывной работы) моего виртуального сервера составлял 332 суток. Но вчера сервер пришлось перезагрузить, однако это проблему не решило.
Вместо долей секунд, за которые ранее генерировались страницы на моем сайте, теперь страницы генерируются по пол-минуты, доходит и до минуты на одну страницу:
curl -w %{time_total}\\n http://webhamster.ru 25,342533
curl -s -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null https://webhamster.ru
Lookup time: 0,004126 Connect time: 0,027547 PreXfer time: 0,103447 StartXfer time: 44,469446
Total time: 44,495544
Либо процесс завершается ошибкой:
504 Gateway Time-out
Нагрузки на CPU нет, память не забита, а вот на дисковый ввод-вывод, похоже, ввели ограничения:
# iostat Linux (webhamster.ru) 04/02/2019 _i686_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle 6.18 0.00 0.50 63.86 0.11 29.35
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 12.18 72.00 81.41 6526729 7379664
Объемы дискового ввода-вывода на устройстве vda небольшие, но показатель iowait=63.86% говорит о том, что система только и занята тем что ожидает ввод-вывод.
Техподдержка вначале говорила, что проблем нет, зато на второй день прислала вот такой фееричный ответ:
Смените тариф на SSD и не будете испытывать таких проблем вероятней всего.
Затем пришло пояснение:
HDD диск не отличается большой скоростью и при близкой к полной заполнении ноды он будет работать так.
Похоже, ребята решили заняться оверселлингом, и стали впихивать в свое оборудование невпихуемое. И теперь работа сайта зависит от работы других неизвестных мне сайтов, крутящихся на той же ноде.
Я уже проходил через это у предыдущего хостера, и меня вынудили сменить хостинг. Тогда я перешел на iHor.ru, и три года мог нормально работать. Теперь, видимо, пришло время съезжать с iHor.ru. Будут некие неудобства, конечно, но что поделаешь. Хорошо, что оплата хостинга до мая, как раз за апрель надо решить куда переезжать.
|
|
|
|
Понадобилась мне книга по очередным изучаемым IT технологиям. Я не умею глубоко читать с экрана, поэтому приходится покупать бумажные книги. Зашел в местный магазин "Читай город", нашел книгу, офигел от цены и ушел.
Зашел на портал "Озон", и купил ту же книгу. Уцененную. С механическими повреждениями. За пол-цены. В кредит. С платежом 59 руб/мес.
У меня всё.
|
|
|
|
Очередная заметка в ЖЖ-стиле.
Новостью прошедшего февраля было сообщение о том, что мой прекрасный хостинг iHor.ru подвергся рейдерской атаке. Владельцы грамотно начали кричать об этом на весь интернет, и поэтому, похоже, обошлось.
Вот типичная новость об этом:
Провайдер «Айхор-хостинг» заявил о рейдерском захвате: сотрудникам заблокировали доступ и отключили электричество
Я, признаться, стреманулся тогда, и судорожно стал искать зарубежный хостинг с параметрами, похожими на те, которые предлагает Айхор. Из вменяемых оказался немецкий Fornex.com, который принимает рубли и имеет цены, адекватные российскому рынку. Я про него узнал еще в 2012 году, с тех пор периодически слежу за ним. У меня даже статья про него написана:
Выбор хостинга Fornex для размещения своих интернет-проектов
Но так как на Айхор у меня оплата не закончилась, я решил занять выжидательную позицию, и просто проверил бекапы сайта, которые ежедневно складываются скриптом в DropBox.
Даже не представляю, как владельцы сайтов смогли бы стряхнуть с Айхор остаток за неиспользованное время (ведь многие покупают хостинг на год и более), если б Айхор смогли подмять новые хозяева. И ведь никаких претензий к самому Айхор никогда не было: у них хорошая техподдержка, пару раз были неплохие скидочные акции. Аптайм высокий, об инфраструктурных работах педантично предреждают заранее. И при таком подходе к делу, из-за каких-то мутных посторонних людей, они вдруг становятся рисковым поставщиком услуг. Как-то это все неправильно.
|
|
|