Pull to refresh
0
0
Александр Егоров @kagor

Пользователь

Send message

Как создать Viber-бота с помощью PHP

Reading time4 min
Views146K

В ноябре 2016 года Viber внедрил публичные аккаунты (Viber public account, или просто PA). С их выходом стало доступно и api, которое позволяет:


  • вести переписку с пользователем
  • проверять статус подписчиков (онлайн, оффлайн)
  • получить информацию о конкретном подписчике
  • вносить записи (посты) на свою страницу

Все это позволяет создать довольно неплохого бота, или же интегрировать бота в уже существующий проект, что вполне может улучшить качество взаимодействие с пользователями. Если вы уже создавали ботов для telegram или slack — то создать бота для Viber не составит большого труда.

Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments31

Разбираемся с установкой и загрузкой Linux на примере ArchLinux

Reading time17 min
Views128K
Сначала мы установим Archlinux и превратим его в загрузочный сервер. Прямо оттуда подготовим новую компактную систему, в которую добавим минимальное графическое окружение и самый необходимый функционал (на примере Firefox). Научим нашу систему загружаться по сети даже на компьютерах с UEFI. Затем полностью переведём её в режим «только для чтения» (сделаем «живой»), что позволит нам использовать систему одновременно хоть на пол сотне разномастных компьютеров с одним единственным загрузочным сервером. Это всё будет работать даже внутри дешёвой 100-Мб сети, которую мы дополнительно «разгоним» в пару раз.

Никакие закладки в жестких дисках будут вам не страшны, потому что дисков у нас не будет. Никакие очумелые ручки пользователей ничего не сломают, т. к. после перезагрузки система вернется в первозданное лично вами состояние. Конечно же, вы научитесь и сможете самостоятельно изменять загружаемую систему таким образом, чтобы в ней содержался только нужный вам функционал и ничего лишнего. Между делом мы выясним, как и в каком порядке загружается Linux, а также из чего он состоит. Знания, как известно, — бесценны, поэтому я делюсь ими даром.

Постараюсь без долгих рассуждений пояснять происходящее, иногда забегая немного вперёд, но впоследствии обязательно раскладывая всё по полочкам. Чтобы у вас вообще не возникало проблем с пониманием, предполагаю, что вы уже работали с каким-нибудь готовым дистрибутивом Linux, пробовали писать простые скрипты с помощью nano или другого текстового редактора. Если вы новичок в ArchLinux, то узнаете много нового, а если «старичок», то узнаете поменьше, но, надеюсь, что в любом случае вы ещё сильнее полюбите Linux.

Информации оказалось очень много. И по устоявшейся голливудской традиции впереди вас ждёт сериал в нескольких частях:
продолжение;
окончание.

Сейчас мы установим Archlinux в VirtualBox, который можно будет клонировать и запускать практически на любом компьютере с legacy BIOS без каких-либо дополнительных настроек. Между делом мы познакомимся с основными приёмами работы с systemd, а также узнаем как его использовать для запуска произвольных служб и программ во время загрузки. Ещё мы увидим, какие этапы проходит Linux при загрузке, и напишем собственный обработчик (hook), который поместим в initramfs. Не знаете что такое initramfs? Тогда заходите под кат.
Читать дальше →
Total votes 11: ↑6 and ↓5+1
Comments7

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Reading time40 min
Views83K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
Читать дальше →
Total votes 162: ↑161 and ↓1+160
Comments61

Заземление. Что это такое и как его сделать (часть 3)

Reading time16 min
Views98K


1 часть. Заземление
(общая информация, термины и определения)


2 часть. Традиционные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


3 часть. Современные способы строительства заземляющих устройств
(описание, расчёт, монтаж)



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

Д. Основные способы строительства

Д1. Модульное заземление (для обычных грунтов)

Д1.1. Особенности решения
Д1.1.1. Универсальность и простота применения
Д1.1.2. Долгий срок службы
Д1.1.3. Зависимость уменьшения сопротивления заземления от увеличения глубины электрода
Д1.1.4. Суперкомпактность
Д1.1.5. Никакой сварки
Д1.2. Расчёт получаемого сопротивления заземления
Д1.3. Монтаж
Д1.4. Достоинства и недостатки

Д2. Электролитическое заземление (для вечномёрзлых или каменистых грунтов)

Д2.1. Особенности решения
Д2.1.1. Простота применения в вечномёрзлых или каменистых грунтах
Д2.1.2. Компактность
Д2.1.3. Образование талика
Д2.1.4. Никакой сварки
Д2.2. Расчёт получаемого сопротивления заземления
Д2.3. Монтаж
Д2.4. Достоинства и недостатки


Д. Основные способы строительства

Напомню о достоинствах и недостатках традиционных способов строительства заземлителей, описанных в прошлой части:
Читать дальше →
Total votes 86: ↑75 and ↓11+64
Comments61

Заземление. Что это такое и как его сделать (часть 2)

Reading time12 min
Views137K


1 часть. Заземление
(общая информация, термины и определения)


2 часть. Традиционные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


3 часть. Современные способы строительства заземляющих устройств
(описание, расчёт, монтаж)



2 часть. Традиционные способы строительства заземляющих устройств (описание, расчёт, монтаж)


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

Г. Основные способы строительства

Г1. Несколько коротких электродов (“уголок и кувалда”)
Г1.1. Особенности решения
Г1.1.1. Промерзание грунта зимой
Г1.1.2. Взаимное “экранирование”/ “затенение” электродов
Г1.2. Расчёт получаемого сопротивления заземления и необходимого количества заземляющих электродов
Г1.3. Монтаж
Г1.4. Достоинства и недостатки
Г1.5. Уменьшение количества электродов
Г2. Одиночный глубинный электрод (“обсадная труба”)
Г2.1. Особенность решения
Г2.2. Расчёт получаемого сопротивления заземления
Г2.3. Монтаж
Г2.4. Достоинства и недостатки


Г. Основные способы строительства


Напомню, в прошлой части я остановился на общем подходе…
Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments30

Заземление. Что это такое и как его сделать (часть 1)

Reading time12 min
Views586K


Мой рассказ будет состоять из трёх частей.

1 часть. Заземление
(общая информация, термины и определения)


2 часть. Традиционные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


3 часть. Современные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


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

Если читатель обладает теоретическими знаниями и интересуется только практической реализацией — ему лучше пропустить первую часть и начать чтение со второй части.

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

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

Некоторая часть текста является компромиссом между точностью и желанием объяснить “человеческим языком”, поэтому допущены упрощения, могущие “резать слух” технически подкованного читателя.

Читать дальше →
Total votes 199: ↑183 and ↓16+167
Comments217

Механические клавиатуры

Reading time17 min
Views764K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

Итак, некоторое время назад я озаботился сбором информации о клавиатурах, и даже начал готовить информацию для статьи, но к сожалению (к счастью?) нашлась исчерпывающая статья о всех нюансах сразу, которую я решил перевести.

Механические клавиатуры. Путеводитель.

Читать дальше →
Total votes 323: ↑313 and ↓10+303
Comments331

Как я патентовал программу (интернет-сервис)

Reading time3 min
Views43K
Программу можно защищать как полезную модель (систему) и как способ.

Лучше одновременно готовить отдельные заявки и на способ, и на полезную модель. Когда будут готовы — патентный поверенный подаст их одновременно в один и тот же день — тогда обе эти заявки не опорочат патентную новизну друг друга, но зато обеспечат защиту с разных сторон.
Читать дальше →
Total votes 62: ↑42 and ↓20+22
Comments51

Mi-one новый смартфон Xiaomi

Reading time2 min
Views21K

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

Не буду слишком углубляться в историю и скажу лишь, что MIUI начиналась, как обычная кастомная прошивка для Android с не совсем обычным интерфейсом. Разрабатывают её ребята из Китая. При этом измененный интерфейс Андроида в этой прошивке, мягко говоря, напоминает интерфейс небезызвестного телефона на «i».

Так вот, эти самые ребята решили, что прошивка прошивкой, но телефон лучше и, назвавшись Xiaomi, выпустили телефон. Аппарат называется MI-One и имеет весьма неплохие характеристики, позволяющие отнести его к флагманам рынка Android смартфонов.

А чем же он удивителен, узнаем под катом
Total votes 73: ↑64 and ↓9+55
Comments172

История языка Си

Reading time6 min
Views38K
Сейчас, наверно, невозможно найти в мире специалиста в IT-области, который бы не слышал о языке Си. Этот язык приобрёл огромную популярность во всём мире и оказал значительное влияние на многие другие языки программирования. Именно он является предшественником таких языков, как C++, C#, Java; менее известных (например J#). Компания Microsoft для разработки родного языка к своей платформе .Net выбрала именно Си-подобный синтаксис. Что ни говори, но язык Си серьезно изменил жизнь программистов прошлого века и стал де-факто в области низкоуровневого программирования, оставив ассемблеру только те места, где производительность имела критическое значение.

Многие помнят имена создателей языка — Кена Томпсона и Дениса Ритчи, но я решил копнуть глубже и вспомнить историю создания и развития языка. Всем кому интересна эта тема — добро пожаловать под кат.
Читать дальше →
Total votes 74: ↑69 and ↓5+64
Comments30

Microsoft выпустил Windows 8 Developer Preview

Reading time1 min
Views8.2K


Вчера Microsoft представил Windows 8 на конференции Build в Анахайме (в штате Калифорния). На ней было рассказано, как новая ОС устраняет разрыв между планшетами, ноутбуками и настольными компьютерами лёгкой системой, которая разработана и для сенсорных экранов, и для клавиатур.

Особенности Windows 8 включают в себя новый интерфейс Metro, ускоренное время загрузки (меньше чем восемь секунд), новый магазин Windows для приложений, связи между приложениями, поддержку аппаратного обеспечения на основе ARM и Intel, а также бесчисленные изменения в опыте взаимодействия и пользовательском интерфейсе, которые разительно отличаются от своих предшественников.

Microsoft опубликовал ссылки для загрузки Windows 8 в Windows Dev Center. Во время developer preview Windows 8 будет бесплатным. Он будет доступен в 32- и 64-битных конфигурациях.

Разумеется, это не готовый продукт, поэтому будьте готовы к ошибкам, постоянным обновлениям и несовместимости программ. В общем, действуйте на свой риск.

Если хотите получить некоторое представление о Windows 8 перед установкой, посмотрите скриншоты под катом.
Читать дальше →
Total votes 111: ↑87 and ↓24+63
Comments184

Windows 8 — версия для разработчиков

Reading time2 min
Views6.3K
Сегодня был знаменательный день для команды Windows. На конференции BUILD была представлена новая операционная система Windows 8. Трансляция мероприятия проходила по адресу http://buildwindows.com (запись можно посмотреть там же).



Тематика этой недели для разработчиков. На этой неделе будут разобраны новые инструменты для создания приложения и API. На конференции BUILD показали, что новая версия Windows подходит для самых различных устройств: планшетных компьютеров, ноутбуков и настольных компьютеров. Были показаны новые инструменты, которые позволяют создавать свои приложения в стиле Metro используя HTML+Javascript, C/C++ и/или C#/XAML. Вы можете использовать любой из этих языков программирования — он всегда будет вписываться в ОС. Windows 8 будет удобен как для конечных пользователей, так и для разработчиков.
Читать дальше →
Total votes 165: ↑143 and ↓22+121
Comments438

Выходим на Windows phone marketplace: от простого желания до реальных результатов

Reading time11 min
Views8.8K

Введение


Если вы матерый программист под платформу .NET и вам неинтересно понастальгировать о временах становления, а также узнать, как там, например, у Яндекса с культурой .NET-разработчиков, а также вы уже зарегистированы в маркетплейсе — эта статья не для вас. Если же вы все тот же матерый программер, но не зарегистированы в маркетплейсе и при этом считаете грабежом отдавать десять процентов прибыли «Софткею», вам будут интересны актуальные данные по регистрации в конце статьи в разделе «Регистрация». Всем остальным: приятного чтения.
Читать дальше →
Total votes 66: ↑54 and ↓12+42
Comments30

Мобильный телефон своими руками. Часть 1

Reading time4 min
Views318K
Недавно на хабре был пост про то, как некие умельцы из Массачусетсого Технологического создали «самодельный» мобильный телефон. Я думаю, пришла пора доказать, что наши месье тоже знают толк в из… э… в изысканных удовольствиях.
Итак, представляю вашему вниманию мобильный телефон, собранный практически «на коленке»!



Всех заинтересованных прошу под кат. Много картинок!
Читать дальше →
Total votes 138: ↑135 and ↓3+132
Comments56

Юнит-тестирование для чайников

Reading time15 min
Views1.1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



То что вы делаете, называется интеграционным тестированием. Современные приложения достаточно сложны и содержат множество зависимостей. Интеграционное тестирование проверяет, что несколько компонентов системы работают вместе правильно.

Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

We need to go deeper
Total votes 70: ↑63 and ↓7+56
Comments65

Пингер на Boost.Asio и модульное тестирование

Reading time8 min
Views12K
Всем привет! В одной из наших предыдущих статей мы рассказали о реализации функции асинхронного пинга в рамках задачи по созданию «пингера» для его дальнейшего использования при пентестах организаций с большим количеством рабочих станций. Сегодня мы поговорим о покрытии нашего пингера (логика и сетевая часть) модульными тестами.

Понятно, что необходимость написать код, который пройдет тестирование, — дисциплинирует и помогает грамотнее планировать архитектуру. Тем не менее, первая мысль о покрытии юнит-тестами асинхронного кода на Boost.Asio была примерно такая: «Что?! Это абсолютно невозможно! Как можно написать тест, основанный на сетевой доступности узла?»
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments2

Пишем кроссплатформенную библиотеку на C++ для работы с именованными каналами

Reading time16 min
Views32K

Предыстория


В процессе разработки одного B2B проекта возникла необходимость обращения к нашему приложению из различных систем вроде 1C, Oracle, MS Sql Server. Первый «универсальный» вариант, который пришел в голову – использовать веб-сервисы. Но, к сожалению, у вышеупомянутых систем несколько разное понимание этого стандарта (например, не факт, что тот же oracle и 1C будут понимать друг друга), кроме того нам не хотелось раздувать проект использованием тяжелых сторонних библиотек (на тот момент мы уже использовали boost и Intel TBB, притягивать же еще Qt или gSoap нам не хотелось).
Поэтому было решено писать свой велосипед.
Подробности создания велосипеда на именованных каналах под катом
Total votes 30: ↑27 and ↓3+24
Comments36

Насколько плохим код должен быть?

Reading time6 min
Views74K
Эрик Липперт — ветеран Microsoft, проработавший в компании 16 лет и стоящий за разработкой VBScript, JScript и C#.

На прошлой неделе в комментариях к одной из статей разгорелся спор о роли низкоуровневой оптимизации в программировании, и я вспомнил относящуюся к этому статью Эрика. Она была написана в конце 2003, и хотя реалии с тех пор несколько изменились — принципы остались теми же самыми. Можете мысленно заменить ASP и VBScript на PHP, JavaScript, или на другой скриптовый язык по вашему вкусу.

Эту статью я уже пытался перевести в 2005, но русский текст тогда получился неуклюжий, так что этот перевод — новый и ранее не публиковался, в соответствии с требованиями НЛО. В Переводе блога Эрика Липперта этого текста тоже нет — наверное, для них он слишком стар.


Я уже много писал о быстродействии скриптов, но до сих пор я не высказывался по поводу того, что многие советы об их оптимизации я считаю как минимум бестолковыми, а то и откровенно вредными.

Например, за семь лет в Microsoft я получил десятки вопросов, аналогичных по своей сути этому, заданному в конце 1990-х:
У нас есть код на VBScript, и в одной часто вызываемой функции мы определяем оператором Dim несколько переменных, которые нигде в функции не используются. Не замедляется ли каждый вызов функции из-за объявления этих переменных?
Какой интересный вопрос! В компилируемом языке, таком как Си, объявление локальных переменных общим размером n байт всего лишь вычитает n из указателя стека при входе в функцию. Если n будет чуть больше или чуть меньше, затраты времени на вычитание никак не изменятся. Наверное, в VBScript точно так же? Оказалось, что нет! Вот что я написал автору вопроса:
Читать дальше →
Total votes 171: ↑146 and ↓25+121
Comments246

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity