Pull to refresh
4
0
Alexander Irbis @BlessMaster

Разработчик

Send message

Использование моделей в Qt

Reading time4 min
Views103K
За последний год пришлось довольно много работать с Model/View фреймворком Qt. Приходилось как писать собственные модели, так и переделывать существующие. И вот, после созерцания очередного творения, решил представить общественности некоторые наработки.

Начнем с очевидного:

Не используйте виджеты

Все эти QTableWidget, QListWidget и QTreeWidget — не для вас.

Использование MVC фреймворка не составляет проблемы. В простейшем случае, можно использовать готовые модели, которые предоставляет Qt. Количество кода и его сложность при этом не растет, зато удается избежать всевозможных проблем роста. Разделение модели и отображения с самого начала позволяет с легкостью добавлять такие вещи как сортировка или фильтрация, не переписывая при этом половину кода.

Одни плюсы, а минусов, при этом, не замечено.
Читать дальше →

Обзор алгоритмов кластеризации данных

Reading time10 min
Views456K
Приветствую!

В своей дипломной работе я проводил обзор и сравнительный анализ алгоритмов кластеризации данных. Подумал, что уже собранный и проработанный материал может оказаться кому-то интересен и полезен.
О том, что такое кластеризация, рассказал sashaeve в статье «Кластеризация: алгоритмы k-means и c-means». Я частично повторю слова Александра, частично дополню. Также в конце этой статьи интересующиеся могут почитать материалы по ссылкам в списке литературы.

Так же я постарался привести сухой «дипломный» стиль изложения к более публицистическому.
Читать дальше →

Почему 98% текстов на ваших сайтах не работают. Вообще. И как это починить

Reading time7 min
Views285K

Вот так люди видят вашу страницу

Привет!
Проблема вот в чём. Если зайти на практически любой сайт интернет-магазина или компании с услугами, вы встретите контент. Точнее — отвратительные тексты, которые писали, кажется, маркетологи, воспитанные сеошниками.

Разумеется, можно не делать, как они. Если работать по-умному, то вы поможете и читателям по жизни, и себе в продажах.

По моим примерным подсчётам (усреднение с ряда позиций), конверсии для нас выглядят так:
  • Только название и картинка — около 1,5%.
  • С описанием от производителя — чуть более 2%.
  • С описанием человека, который держал это в руках и знает правила — около 6%.

Ниже — рассказ про то, как мы доводили время на сайте от 3 минут сначала до 6:40, а потом до 20:48. Да-да, двадцати минут сорока восьми секунд для среднего посетителя. Честного среднего, с учётом отказов и по полной выборке.
Читать дальше →

Серьезное проектирование серьезного магазина. Часть 1. Исследуем и продумываем функционал

Reading time19 min
Views129K
Не так давно я писал статью про проектирование больших сайтов на примере социальной сети со схожим названием: «Серьезное проектирование серьезных сайтов». Сегодня я хочу поговорить про одну из основных сфер нашей деятельности – электронную коммерции, а именно про проектирование интернет-магазинов.

Это цикл статей больше специалистов, значительно более углубленно, чем все мои прошлые статье в этой области. В статье я расскажу про крупнейшие интернет-магазины США, Китая, России и Украины, расскажу как маркетинг влияет на проектирование, покажу подробный Mind Map гипермаркета, опишу 57 основных модулей интернет-магазинов для внешней (покупательской) части и более 50 модулей для внутренней части (административной), покажу интерфейсы магазинов и еще много полезного.

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

Ранее я уже писал статью про технологию проектирования больших сайтов, которая, кстати, имела очень большую популярность в русскоязычном и англоязычном сегменте Интернета: «Серьезное проектирование серьезных сайтов». Проектирование интернет-магазина хоть и имеет сходную последовательность действий, описанную мной в прошлой статье, но сама технология все таки сильно отличается, поэтому давайте рассмотрим это в мельчайших подробностях. По ходу статьи я буду ссылаться на свою прошлую, чтобы не повторяться, а в этой сделаю упор именно на различия.
Mind Map
Читать дальше →

Код для запуска атомных бомб США: 00000000

Reading time1 min
Views102K
image

Большой спор можно устроить, задав вопрос: «Относится ли прописная истина „Всё гениальное просто“ к информационной безопасности?» Особенно если безопасность, кхм, не столько то и информационная, сколько физическая.

А заставила задуматься об этом новость, что на протяжении 20 лет, код для запуска всех ядерных ракет США семейства «Минитмен» был… Восемь нулей! Да, представляю лица террористов, в лучших традициях кинематографа простреливающих колено президенту и слышащих код «ноль, ноль, ноль, ноль… ввод»

«В нашей инструкции перед запуском фактически говорилось о том, что мы должны проинформировать бригаду, дважды проверить закрытие люка подземного бункера и убедиться, что никакие другие цифры кроме нулей не были случайно набраны на операционной панели» — признаётся бывший офицер ВВС Брюс Г. Блэр.

Bitcoin — объяснение экспоненциального роста

Reading time4 min
Views87K

Disclaimer


Не знаю, почему нельзя публиковать переводы интересных статей, но попробую. Тема очень актуальная и я думаю многим тут будет интересно. Поэтому рассчитываю, что пройдёт премодерацию.
Так же эта публикация является ответом на вопрос, поднятый в недавней статье «Bitcoin. Что дальше?»
Итак, поехали…

Вступление


Сегодня попался на глаза один интересный анализ по Bitcoin, чем и спешу поделиться с сообществом. Перевод делал сам, не копипаста. Извините за неточности.
Источник: bitcoinowl.com/exponential-growth-bitcoin-value-explained
Автор оригинала: Ivan Raszl
Дата оригинала: 22 ноября 2013 — 23:15

Так почему же он растёт?



Читать дальше →

Создание расширений в PostgreSQL

Reading time20 min
Views24K

Здравствуйте, хабрачеловеки! Темой этой статьи будет создание расширений для PostgreSQL. В качестве примера, мы реализуем небольшую библиотеку для работы с 3D векторами. Параллельно будут рассмотрены пользовательские типы, операторы и приведения типов. Не будет лишним ознакомися с этим материалом, так как реализация хранимых функций будет на языке C. Надеюсь, друзья слонов помогут скрасить серый технический текст статьи.
Подробней

Хранимые функции на С в PostgreSQL

Reading time6 min
Views30K

Здравствуйте, хабрачеловеки! Многие из Вас сталкивались с вынесением бизнес-логики в СУБД в виде хранимых функций/процедур, облегчая клиент. В этом есть как и преимущества, так и недостатки. Сегодня я бы хотел рассказать Вам как создавать хранимые функции в PostgreSQL, написанные на языке C. В статье будут самые основы, которые необходимо знать для начала работы с ними.
Подробней

Оптимизация Ubuntu (и прочих Linux-ов) под SSD

Reading time4 min
Views206K
Доброго времени суток всем читающим. В данной мини-статье мне хотелось бы собрать и рассмотреть основные моменты оптимизации работы (и, конечно, продления жизненного цикла ) твердотельных накопителей. Практически всю информацию можно легко найти в сети, но тут я попытаюсь упомянуть пару подводных камней.
Читать дальше →

Как я писал Футболоид под iOS

Reading time15 min
Views41K
Приветствую достопочтеннейших Хабралюдей!


Не так давно, во время поиска новой работы, я получил очень интересное тестовое задание от ZeptoLab: написать за пару рабочих дней арканоид под iOS без использования сторонних библиотек типа Cocos2d/Box2d и т.п., то есть, на «чистом» OpenGL, что показалось мне весьма интересным. Кстати, об этом задании на Хабре уже писали, и даже устраивали разбор полётов. Итак, я бросил вызов судьбе и взялся за геймдев впервые после школьных упражнений с васиком в графическом режиме!

Уточню, что некоторые знания OpenGL у меня уже были, но весьма и весьма поверхностные. Можно сказать, что их не было ну почти совсем, я просто знал, что такое вьюпорт и что бывают какие-то там спрайты, что существуют матрицы преобразования… Так что данная статья могла бы быть озаглавлена "Как написать простую игру под iOS на чистом OpenGL, не зная его", но это слишком уж длинно.

В общем, если Вам интересно, как я это сделал за ~10 часов разработки и ~2 часа чтения, прошу под кат. (осторожно! много кода! мало картинок! ссылка на гитхаб и расслабляющее видео в конце!)
Поехали

Асинхронность: назад в будущее

Reading time22 min
Views114K

Асинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…

Именно такую картину рисует мое воспаленное воображение при слове “асинхронность”. Конечно, все это слишком эмоционально и не всегда правда. Ведь так?.. Возможны варианты. Некоторые скажут, что “при правильном подходе все будет работать хорошо”. Однако это можно сказать всегда и везде при всяком удобном и не удобном случае. Но лучше от этого не становится, баги не исправляются, а бессонница не проходит.

Так что же такое асинхронность? Почему она так привлекательна? А главное: что с ней не так?
Назад в будущее...

10 советов по борьбе с патентными троллями

Reading time13 min
Views38K
Доброе утро, Хабр! Нет, сегодня не про вирусы, и даже не про антивирусы. Сегодня про троллей. Патентных. Как вы, возможно, уже слышали, недавно мы («Лаборатория Касперского») задавили еще одного из них — Lodsys. Битва была во всех смыслах эпической: мало того, что само разбирательство длилось аж полтора года, а количество ответчиков превышало 50 штук, так еще и до финиша мы добрались в полном одиночестве, заставив гадину бежать с поля боя, трусливо поджав патенты. Так вот, учитывая, что это была далеко не первая (и не последняя) схватка, можно смело говорить о том, что у нас накопился внушительный опыт в борьбе с патентными троллями разных мастей, размеров и степени наглости. И таким опытом очень хочется поделиться с вами.

Поэтому представляем вашему вниманию 10 основных рекомендаций, которые сформировались во время борьбы с патентными троллями разных стран. Да, у всех есть национальные особенности, но в целом шаблон их действий достаточно однотипен, а приёмчики укладываются в стандарт с небольшими отклонениями. Так что в той или иной степени советы будут полезны любой затролленной компании, не обязательно крупной и не обязательно российской. Вот разве что пост получился немаленький, но мы постарались рассказать обо всем максимально интересно и по существу. Итак…

Читать дальше →

Шифрования сообщений вконтакте методом AES для браузеров Chrome и Firefox

Reading time2 min
Views73K
image

После скандала с PRISM вопрос безопасности данных стал еще актуальней чем был, и даже если вы не секретный агент, то ваша личная переписка, должна соответствовать своему названию, и по умолчанию должна быть закрыта от доступа третьих лиц. Взяв это за аксиому это принцип, я занялся разработкой дополнений для браузеров для работы с популярной в странах СНГ социальной сетью вконтакте методом AES.
Читать дальше →

Как Денис Крючков выкупил Хабр у Mail.ru

Reading time6 min
Views298K
Денис Крючков (deniskin) рассказал Roem.ru о том, что он смог выкупить акции «Тематических медиа» у Mail.Ru Group и теперь сможет управлять компанией единолично. Мы думаем, что это одно из самых эпохальных событий в истории «Хабрахабра» и по такому случаю у Дениса стоит взять интервью



— Привет, позволь тебя поздравить. Как у тебя получилось выкупить долю Mail.ru в «Хабре»? Никто же не будет продавать курицу, несущую золотые яйца
— Спасибо! Да, конечно, для этого пришлось довольно долго искать деньги.
И где же их Денис нашёл?

Создание видео редактора — полезные рецепты avconv (ffmpeg)

Reading time8 min
Views27K


Недавно потребовалось написать небольшой видеоредактор с веб-интерфейсом.
До этого изредка доводилось пользоваться командами типа
ffmpeg -i file.avi file.mp3

в основном для конвертации из одного формата в другой. Все всегда было более менее гладко и сложно было представить, сколько на самом деле существует всяких нюансов для работы с видео и аудио.
Но начнем с начала. С некоторых пор моя ubuntu начала выдавать:
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

В целом, пока это использовалось по-мелочам, это было не особо важно, но закладывать уже устаревающую фичу в проект как-то «не оно». Пришлось гуглить что к чему и выяснилось, что проект ffmpeg некоторое время назад раскололся и часть разработчиков занялась созданием библиотеки libav, которая и включена в настоящее время в ubuntu по-умолчанию. Разумеется, совместимость передовых фич была принесена в жертву первой. Заодно и с переименованием проекта исполняемый файл ffmpeg был переименован в avconv, о чём и было вышеупомянутое предупреждение.

Под катом небольшая выжимка основных фич, которые пригодились.
Читать дальше →

Перевод выделенного текста с любого языка на русский

Reading time2 min
Views63K
Хочу поделиться с вами своим лайфхаком.
В первую очередь он предназначен для людей, которым лень лезть в словарь всякий раз, когда они встречают незнакомое иностранное слово в тексте.

Я хочу рассказать, как получить перевод выделенного текста в виде оповещения рабочего стола.

Читать дальше →

Строковая интерполяция. Сказка-быль

Reading time2 min
Views30K

Постановка задачи


Совершенно случайно я превратился из питониста в JS-разработчика, и на мою хрупкую детскую психику обрушился непосильный груз вещей, которых в JS нет. Например, нет удобного форматирования строк. На питоне можно написать:
'hello, %(thing)s' % {'thing': 'world'}

Или вот так:
'hello, {thing}'.format(**{'thing': 'world'})


Читать дальше, там интересно

Переход с bootstrap 2 на bootstrap 3

Reading time5 min
Views61K


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

На днях вышла третья версия этого замечательного фреймворка, и, естественно, сразу захотелось посмотреть, как будут выглядеть сделанные на второй версии проекты, если просто поменять 2-ю на 3-ю. Оказалось что никак. Всё расползлось, разъехалось и кое-что перестало работать.

После чего захотелось всё быстренько поправить. И вот, что из этого получилось, читаем дальше.
Читать дальше →

Эльзевир – мой вклад в его падение [перевод]

Reading time6 min
Views37K
от переводчика: В свете недавно появившейся на Хабре публикации «Наука под замком», хотелось бы привести взгляд изнутри на проблему доступности научных публикаций британского математика из Кембриджского университета, пишущего в интернете по ником gowers.

P.S. Международные названия журналов, насколько мне известно, не имеют официальных переводов, поэтому перевод дан по смыслу с указанием оригинального названия


Нидерландская издательская компания Эльзевир (Elsevier) публикует множество самых известных мировых журналов по математике, включая «Успехи математики» («Advances in Mathematics»), «Доклады по математике» («Comptes Rendus Mathematique»), «Дискретная математика» («Discrete Mathematics»), «Европейский журнал по комбинаторике» («The European Journal of Combinatorics»), «История математики» («Historia Mathematica»), «Журнал по алгебре» («Journal of Algebra»), «Журнал теории приближений» («Journal of Approximation Theory»), «Журнал по комбинаторике. Серия А» («Journal of Combinatorics Series A»), «Журнал функционального анализа» («Journal of Functional Analysis»), «Журнал по геометрии и физике» («Journal of Geometry and Physics»), «Журнал математического анализа и его приложений» («Journal of Mathematical Analysis and Applications»), «Журнал по теории чисел» («Journal of Number Theory»), «Топология» («Topology»), «Топология и её приложения» («Topology and its Applications»). В течение многих лет компания подвергается жесткой критике за свою практику ведения бизнеса. Позвольте мне кратко обобщить основные пункты, на которых основана эта критика.

  1. Цены издательства непомерно высоки – настолько выше среднего, что просто удивительно, что это так долго сходит издательству с рук.
  2. Один из способов, с помощью которого им удается этого добиваться, – это так называемая «продажа пачкой», суть которой в том, что библиотеки не могут выбирать, на какие именно журналы подписаться, они могут выбрать либо большую подборку (сделанную издательством, а не библиотекой) либо вообще ничего. То есть если некоторые из журналов в «пачке» незаменимы для библиотеки, то ей приходится подписываться и по очень высоким ценам на большое число журналов по разным наукам; при этом многие из этих журналов библиотеке вообще не нужны («Журнал хаоса, солитонов и фракталов» являет собой яркий пример периодического издания, которое многие математики считают просто ничтожным, при этом библиотеки по всему миру вынуждены на него подписываться). Учитывая то, что бюджет библиотек часто весьма ограничен, на практике это означает, что из-за этого им просто не хватает средств, чтобы подписаться на многие журналы других издателей, которые гораздо нужнее. В результате страдают не только библиотеки, но и другие издательства, что безусловно, является одной из причин, почему Эльзевир предпочитает эту схему.
  3. Если библиотеки пытаются договорится о лучшей сделке, Эльзевир не церемонится с тем, чтобы перекрыть им доступ ко всем журналам.
  4. Эльзевир поддерживает многие меры, такие как «Закон о научных работах» ( «Research Works Act» ), которые препятствуют попаданию работ в открытый доступ. Также издательство Эльзевир поддерживало законопроекты SOPA и PIPA и активно их лоббировало.


Я мог бы продолжить, но на этом остановлюсь.

Кажется необъяснимым, почему ситуация продолжает развивается подобным образом. В конце концов, математики (как и другие ученые) жалуются на это уже долгое время. Почему бы им просто не отказаться публиковаться в журналах, издаваемых Эльзевиром?

Читать дальше →

Абсолютное горизонтальное и вертикальное центрирование

Reading time5 min
Views317K
Сколько уже было сломано копий о задачу выравнивания элементов на странице. Предлагаю вашему вниманию перевод отличной статьи с решением этой проблемы от Стефана Шоу (Stephen Shaw) для Smashing Magazine — Absolute Horizontal And Vertical Centering In CSS.

Все мы знали о margin: 0 auto; для горизонтального центрирования, но margin: auto; не работало для вертикального. Это можно легко исправить, просто задав высоту и применив следующие стили:

.Absolute-Center {
  margin: auto;
  position: absolute;
  top: 0; left: 0; bottom: 0; right: 0;
}

Я не первый, кто предложил это решение, однако такой подход редко применяется при вертикальном выравнивании. В комментариях к статье How to Center Anything With CSS Simon ссылается на пример jsFiddle, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

Рассмотрим способ поближе.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity