• Email-стратегия — ковчег digital-рекламы

    В 2013 году я побывал на одной из первых питерских конференций e-commerce. Не сказать, что самое начало, но и делать еще никто толком ничего не умел. Компаниям не требовались трафик-менеджеры “с ручками” в промышленных масштабах. Говорили, разве что, о подборе цветов кнопки, как о главном принципе юзабилити, да о феномене контекстной рекламы. В основном, это были промо-выступления бородатых евангелистов сервисов автоматизации. Позже все они ушли обмениваться лайками в инфобизнес.

    С тех пор прошло несколько лет, за которые интернет-рынок потребителей товаров со спросом был успешно поделен с помощью систем Директ и Adwords. Благодаря огромным бюджетам сайты больших компаний взобрались на первые строки поисковых систем, получив приток SEO-трафика в подарок от монополий типа Яндекс и Яндекс.Маркет.

    Читать дальше →
  • AXAPTA vs 1C

    Вступление. Из чего выбирать


    У любой работающей компании есть ERP, даже если она(компания) об этом не знает. И рано или поздно приходится задумываться о её замене. Если вы, просчитав стоимость, отказываетесь от замены, то это тоже результат, возможно, не худший.

    Хорошим тоном считается предложить руководству хотя бы два варианта для выбора. Выбор между разными конфигурациями 1С возможен, но почему бы не воспользоваться случаем и не рассмотреть более серьезные системы, хотя бы в плане самообразования. Опять же и у руководства развеются иллюзии (если они есть), что где-то за месяц напишут безглючную быструю программу.

    Что же рассматривать при наличие 100-1000 пользователей и денег у компании? Даже конкретизируем: дистрибуция 200 одновременно работающих пользователей. Давайте смотреть.
    Читать дальше →
  • Непопулярное в JDBC

    О API JDBC достаточно много информации и гайдов, но к сожалению почти все как под копирку. Сам достаточно долгое время осваивал это чудо, переводя ресурсы умных.

    Привет, Хабр!


    Не так давно узнал о некоторых приемах создания соединения и дальнейшей работы с ним.
    На 100% уникальность не претендую, лавры не собираю.
    Читать дальше →
  • Настройка failover на mikrotik с двумя приходами по PPPoE

    Введение


    Оговорюсь сразу, на многих ресурсах есть множество инструкций по настройке failover, от простейших настроек до сложных скриптов. Моя же статья подойдёт не всем, тут есть два необходимых условия:

    1. Интернет от провайдера приходит по двум PPPoE туннелям
    2. Провайдер должен отдавать DHCP на основном приходящем интерфейсе

    Вводные данные


    Инициализировать PPPoE соединения у нас будет роутер MikroTik hAP AC Lite. Перед роутером у нас стоят — GePON ONT Eltex NTE RG-1402G (основной канал) и Ubiquity Litebeam M5-23 (резервный канал, радио). Все устройства подключения к сети провайдера настроены в режиме моста (bridge).
    Читать дальше →
  • Работа с формами HTML — генерация форм

    В предыдущей части мы вывели простую форму и обработали пользовательский ввод. Вывод формы, мягко скажем, был не оптимален. С десяток операторов echo. Можно было заменить их куском перемешанного html и php, что также было бы далеко от идеала. Итак, в этот раз мы разберем теги по группам, сформулируем требования к описанию и опишем форму в массиве, затем выведем её.
    Читать дальше →
  • Как сделать фильтр всех товаров на сайте по свойству, сохранив штатный функционал, и не сломав мозг?

    Передо мной стояла следующая задача: сделать фильтрацию всех товаров в инфоблоке по одному свойству, сохранив штатный функционал и рабочий «Умный фильтр». Вы скажете, что в битриксе есть замечательный «умный» фильтр с его фасетными индексами, а я скажу, что да, он есть. Но давайте взглянем на исходные данные задачи
    Читать дальше →
  • Особенность border в сочетании с collapse в Firefox

    Недавно, при написании одного из проектов, столкнулся с проблемой отображения границ в таблицах. Никогда не думал, что могут возникнуть сложности в такой тривиальной задаче.
    В чем суть? По дефолту вокруг каждой ячейки отображается своя рамка (рисунок 1). Мне необходимо было, чтобы отображалась одна линия между двумя ячейками (рисунок 2). Для этого я таблице задал border-collapse: collapse и толщину границы 1px.
    image

    Самое интересное начинается, если стиль границы поменять с solid на dashed (рисунок 3).
    Читать дальше →
  • Будьте проще. Иногда стоит написать велосипед

    Сразу к делу. Я по большей части backend-разработчик, но выдалась задачка реализовать на сайте ленту с эффектом параллакса при прокрутке. В голове мгновенно на автомате решение — npm, bower, google в помощь и погнали. И сразу все эти fremworks, библиотеки, настройки, внедрения и так далее. Блин, мне нужен простой эффект, больше ничего, я не хочу разбираться во всех этих мануалах, тонкостях frontend-дизайна, тащить кучу библиотек из-за такой ерунды.
    Читать дальше →
  • Сравнение скорости выполнения SQL-запросов к разным БД

    Эта публикация является односторонним сравнением популярных реляционных баз данных. А именно: по времени выполнения SQL-запросов в различных БД при прочих равных условиях (тип запроса и размер таблицы).

    Заметка: если вас интересует только результат тестирования — прошу к разделу Результаты.

    image
    Читать дальше →
  • Как научить нейросеть придумывать названия российских населенных пунктов

    Для начала немного несуществующих деревень и сёл


    Сальтолово
    Ничичи
    Каверная Голяна
    Придориусловка
    Старотипенки
    Кюканово
    Кутюшевка
    Верхний Стед
    Сабаревка
    Зеленокировка
    Хадонские Выселки
    Старый Куля
    Октяга
    Ржиново
    Черемошно
    Голодионово
    Александрово-Полейково
    Подлопаново
    Малое Сусовое
    Горы-Чусалы
    Чубравяково




    Зачем и почему


    Всем привет, меня зовут Илья, я занимаюсь компьютационной биологией и биохимией, в свободное время я заставляю нейросети страдать ерундой.


    Основываясь на аналогичных проектах (названия британских деревень, названия мест в Орегоне, названия различных цветов и их RGB), я решил научить нейросеть создавать названия несуществующих населенных пунктов


    В качестве нейросети я решил воспользоваться torch-rnn, которую достаточно легко установить и настроить. Список городов и сел я нашел тут (можно скачать все в формате csv). С csv пришлось немного повозиться, чтобы привести ее к utf-8, после чего я запихнул ее в нейросеть и оставил на пару часов. Когда тренировка модели закончилась я взял небольшой сампл и получил следующий результат:

    Читать дальше →
  • Proxy как шаблон проектирования на примере работы с куками

    Про куки


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


    $.cookie('cookie_name', 'cookie_value'); //установка
    $.cookie('cookie_name'); //чтение
    $.cookie('cookie_name', null); //удаление
    $.cookie('cookie_name', 'cookie_value', {
        expires: 5,
        path: '/admin',
    }); //опции

    или


    cookie.set('cookie_name', optios);
    cookie.get('cookie_name');

    В исходниках на получение куки всегда есть что-то из разряда


    var cookies = document.cookie.split('; ');
    for (var i = 0; i < cookies.length; i++) {
    // и разбор самой куки
    }

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


    // прочитать
    if (cookie.id === '1') {
        //удалить
        delete cookie.id;
    }
    
    //установить новое значение
    cookie.key = '12341234';
    
    //поменяем опции
    cookie.options = {
        expires: new Date(Date.now() + 30*24*60*60*1000).toUTCString(),
        path: '/'
    };
    
    //обновить значение
    cookie.key = '43214321';

    Proxy


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

    Читать дальше →
  • Мобильный мессенджер обмена мгновенными сообщениями

    Вступление


    Уважаемые Хабрахабровцы, хочу поделиться с Вами своей разработкой для OS Android.
    Данная статья ориентирована, во-первых, на новичков в андроид-разработке, во-вторых, на людей, которым интересна идея о безопасности общения по сети, в-третьих, просто на тех кому интересно.

    Суть


    Моя цель написать мессенджер, который позволил бы, в коей мере, уйти от всемирной слежки. Уйти? — спросите Вы. Да именно так я представляю себе, мое творение. Потому как общение клиента с сервером реализуется на сокетах, с применением ГОСТ-товского шифрования «МАГМА» (блочный симметричный).

    Программный комплекс (назовем его комплексом, ибо он состоит из двух модулей, написанных собственными руками) имеет в своем составе следующие компоненты: клиентская часть, написанная в AndroidStudio и серверная часть, написанная в IntelliJ IDEA. Клиентов мы распространяем доступными нам способами: передачей APK по BlueTooth, WatsApp, PlayMarket, да и вообще как душа пожелает и как удобно Вашей аудитории. Сервер запускаем на своем ПК, можно конечно и арендовать какой-нибудь сторонний сервер, все равно данные там хранить мы не будем. Клиенты регистрируются, авторизуются и готовы для массовых переписок. (в перспективе реализую и индивидуальное общение ТЕТ-А-ТЕТ, а также шифрование).

    Недоработки


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

    Хватит лирики, перейдем к кодингу


    Комментарии в коде писал для себя, поэтому думаю все будет понятно и по ним.

    Начнем с сервера:

    1. класс описания самого «ядра» сервера
    Читать дальше →
  • Неработающий сенсор закрытия крышки ноутбука и что из этого вышло

    Какое-то время назад мой рабочий ноутбук отказался включаться. Просто не реагировал ни на какие попытки, включая отключение батареи. У технической поддержки ушло несколько месяцев на то, чтобы замененить практически все компоненты от матрицы до материнской платы и выяснить, что проблема была в перетертом шлейфе матрицы. Шлейф заменили, машина ожила и вернулась ко мне. Но в первый же день выяснилась интересная особенность — видимо, в пылу борьбы со шлейфом ремонтеры поломали или отключили датчик закрытия крышки. Теперь ноутбук не засыпает при закрытии крышки. Какое-то время я пытался найти способ устранить это самостоятельно, но в этот раз действенных советов Гугл и форумы комании Lenovo, к сожалению, не дали. Второй раз отдавать машину в ремонт просто страшно.

    Ок, я не могу решить проблему механически, но может быть можно придумать, какой-то простой workaround. Например, я привык, уходя блокировать компьютер нажатием Win+L, почему бы не сделать shortcut для перевод машины в спящий режим? Выяснилось, что отправить машину в sleep несложно, но вот привязать это к нажатию на Ctrl+Q, например, уже не так тривиально. Можно найти софт, который будет управлять для вас этими функциями. Ну или написать свой. И так вышло, что как раз сегодня есть пара часов времени и стойкое желание попрактиковаться в программировании.

    Так как программист я посредственный, то писать решил на C# в Visual Studio Community Edition. Чтобы не усложнять создал пустой проект в формате Windows Form Application с одной формой, в которую добавил контрол notifyIcon. Форму сделал невидимой сразу после старта, а в обработчк MouseDoubleClick добавил код включения и выключения видимости, чтобы форму можно было штатным образом закрыть. Эта мысль пришла не сразу, а после того, как стало понятно, что приложение должно уметь отменить регистрацию глобальных shortcut-ов после своей терминации.
    Читать дальше →
  • Разработка редактора (расширение на C# для Visual Studio)

    День добрый.


    В связи с созданием большого расширяемого проекта, возникла необходимость дать разработчикам возможность собирать свои пакеты/модули под проект. (Нечто похожее на редактор Feature и WSP Package для SharePoint) Для этого необходимо создать редактор пакетов/модулей для Visual Studio. Для создания расширения под Visual Studio очень мало информации в интернете, а из официального нашел только это. Решил собрать свою библиотеку (VSExtensibilityHelper), которая бы облегчила пользователю создание VSIX дополнений. В ней собраны базовые классы для создания редакторов:


    • BaseEditorFactory — Базовый класс фабрика
    • BaseWinFormsEditorPane — Базовый класс для редактора на основе WinForms компонента
    • BaseWpfEditorPane — Базовый класс для редактора на основе WPF компонента
    Читать дальше →
  • Для чего я создал очередную библиотеку, чтобы уменьшить шаблонный код Redux.js

    Данный пост — перевод данной статьи

    Я работал над новым проектом на React и Redux. Раньше при разработке проектов на React, я работал в одиночку, но в этот раз я был частью команды, где каждый член команды имел некоторый опыт в React и Redux. Проект должен был быть выпущен в продакшн за короткое время.
    Читать дальше →
  • 8 шагов к эффективному управлению временем 

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

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

    [2] Займитесь математикой.
    После того, как вы получили исходные данные, рассчитайте время по нескольким категориям. Каковы ваши ощущения? На что вы потратили слишком много времени, а на что недостаточно? Что вам больше всего нравится в вашем расписании? Что бы вы хотели изменить? Мне удобнее всего было вести данный хронометраж в обычной таблице Excel, где желтым цветом я обозначила те дела, которые мне нравятся и вдохновляют меня. И как вы можете догадаться их было не очень много, ну а если на чистоту это всего 6 дел из 127, теперь я активно работаю над тем, чтобы неприятные дела делегировать по максимуму.
    Читать дальше →
  • Как развернуть phpPgAdmin и phpMyAdmin на Windows

    Ни одно приложение и BI система на данный момент не может существовать без базы данных, наиболее популярными по крайней мере из бесплатных СУБД являются MySQL и PostgreSQL.


    Конечно любой СУБД вполне можно управлять из командной строки без какого либо графического интерфейса, в этом есть и свои преимущества, к примеру если вы работаете с СУБД из командной строки то вам не потребуется установки какого либо дополнительного программного обеспечения для администрирования базы данных с любого ПК. Но всё же командная строка далеко не самый удобный в работе инструмент.

    Читать дальше →
  • Об IT образовании. Образование глазами студента

    Я учусь на третьем курсе одного из московских вузов, в котором абитуриентам обещают сделать из них широкопрофильных специалистов в сфере IT уже через 4 года. Хотелось бы подробнее написать, как все происходит на самом деле.

    Преподаватели


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

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

    Кроме того, преподаватели часто недостаточно мотивированы, как и сами студенты. Как только некоторые из них видят, что их предмет не вызывает особого интереса у студентов, они всячески начинают развлекать их чем-то другим. Например, у меня был препод, который вел у нас предмет с необходимостью как можно больше практиковаться, но практики не было вообще… Зато были истории про его жизнь в большом количестве, совершенно не связанные с предметом. Истории вполне уместны, но не тогда, когда они занимают большую часть учебного процесса.
    Ну есть, конечно, совершенно другие преподаватели. Их легко отличить, потому что сразу видно, что им нравится учить нас и они относятся к этому, как к важной миссии, а не как к рутине. Таких у нас было 5-6 за четыре семестра (при том, что в общей сложности, было больше 20). К сожалению, классный препод до сих пор остается скорее исключением, чем правилом. Но о том, что же делает его классным, немного позже.

    Читать дальше →
  • Greedy algorithms and proof of correctness (part 1)

    Это цикл статей о том, как распознавать задачи, решаемые жадными алгоритмами, писать строгие доказательства корректности этих алгоритмов, а также о том, как распознавать задачи для которых жадные алгоритмы не применимы.

    Вступление


    О жадных алгоритмах многие знают еще со школы с университета. В любом курсе по алгоритмам выделена хотя бы одна небольшая глава посвященная жадным алгоритмам. В частности, в книге Томаса Кормена «Алгоритмы. Построение и анализ» освящается эта тема.

    В данной статье будет одна задача, для которой будет приведено строгое доказательство на почти формальном математическом языке.
    Читать дальше →