Как стать автором
Обновить
7
0
Сергей Петрук @SPetruk

Dev2Dev Lead at Qiwi

Отправить сообщение

Создание канала с автопостингом в Телеграме без единой строчки кода

Время на прочтение4 мин
Количество просмотров165K

Вступление


Предупреждаю сразу: технического в статье очень мало. Это практически пошаговая инструкция для не очень сведующих в техническом плане пользователей. Для людей сведущих (и тех, кому лень читать много текста), приведу две ссылки: Telegram Bots API + IFTTT Maker Channel.

Теперь подробнее. Думаю, все слышали про мессенджер Telegram. Вероятно, многие даже знают про нехитрый API для создания ботов в этом мессенджере. Кроме того, не так давно в T появилась возможность создавать так называемые «каналы» (channels), упрощающие мгновенную рассылку сообщений практически любому количеству подписавшихся на канал лиц. Наконец, самая свежая новость: ботов стало можно добавлять в качестве администраторов в каналы, то есть такие рассылки стало можно делать автоматизированно.

Думаю, не надо объяснять, что это открывает довольно широкие возможности для различных сервисов. Например, у меня довольно быстро получилось сделать следующее:
  • три канала (@RedditTop, @r_pics, @gone_wild — осторожно, последний с «взрослым» контентом), которые ежечасно импортируют топовые посты с Реддита (и двух его сабреддитов);
  • ещё канал, делающий то же с постами с 9GAG;
  • и, наконец, завел хитрого бота @JamesBot, который анонимно пересылает все сообщения, написанные ему, в общий канал (@secret_ru, @secret_en, @secret_es, @secret_ar или @secret_fa — в зависимости от языка). Получился анонимный чат средней степени трэшовости.

Уже после создания всех этих ботов и каналов мне пришло в голову, что простейший автоимпорт постов откуда-то «снаружи» можно наладить вообще без всякого кода и хостинга — буквально минут за 5. На помощь нам придет прекрасный сервис IFTTT — If This Then That, имеющий множество интеграций с социальными сетями и прочими сервисами. Правда, к сожалению, прямой интеграции с Телеграмом у него (пока?) нет — зато есть т.н. IFTTT Maker Channel, позволяющий делать простые HTTP(S)-запросы при срабатывании триггера. К сожалению, мы не сможем принимать сообщения, отправленные боту (входящие запросы IFTTT Maker принимать может, но, увы, только в строго определенном формате) — интерактива не выйдет. Зато сможем по срабатывании любого события (например, новый твит или пост в FB):
  • публиковать сообщение в канале,
  • отправлять сообщение в заранее выбранный чат (куда добавлен наш бот),
  • отправлять сообщение заранее указанному пользователю (который добавил себе бота).
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии16

Bash-скрипты: начало

Время на прочтение11 мин
Количество просмотров1.8M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии123

Аудит актуальных уязвимостей без регистрации и смс

Время на прочтение8 мин
Количество просмотров9.9K

Вступление


Как известно каждому, кто хоть раз подписывался на рассылки по ИБ, количество найденных за день уязвимостей часто превышает возможности человека по их разбору. Особенно, если серверов — много, особенно если там зоопарк из ОС и версий.

В этом топике я расскажу о том, как мы решили эту проблему. И да, Perl* жив :)
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии8

Как отметить свои TODO, FIXME и ERROR в Xcode

Время на прочтение3 мин
Количество просмотров17K

Этот пост является вольным переводом статьи How to highlight your TODOs, FIXMEs, & ERRORs in Xcode by Hector Matos


Это был самый обычный день: я писал код, устранял баги и вообще все было прекрасно. Именно тогда я написал блок кода, к которому нужно было вернуться позже. Это обычный случай, с которым вы тоже вероятно сталкивались: нужно было взаимодействовать с API который еще не был готов. Я знал общую структуру объекта, который получу по API, но я еще не мог протестировать работу с ним. Как и любой другой разработчик, я написал комментарий, который выглядит так:



В этот момент я хотел бы создать предупреждение в Xcode, такое же как мы привыкли делать в Objective-C с помощью директив компилятора:



Но увы, так не получилось и я загрустил.


Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии7

Заряжаем Xcode

Время на прочтение3 мин
Количество просмотров24K


Этот пост является вольным переводом статьи Xcode, Supercharged.

Для нас, как инженеров, очень важно привыкнуть к инструментам, которые мы используем в работе каждый день, но никогда не стоит останавливаться на их изучении. Всегда найдутся скрытые возможности, которые помогают нам работать быстрее и концентрироваться на цели, а не на средствах ее достижения. Я покажу некоторые «фишки», которые обнаружил за время своей работы в среде разработки Xcode. Надеюсь, они и вам пригодятся.

1. Ctrl + цифры

В Xcode есть быстрая навигация по всему проекту: от корневого каталога до файлов и методов в них. Просто нажмите Ctrl + цифры от 1 до 6 и сами увидите. В появляющихся окнах также работает поиск.



2. «Фишки» брэйкпоинтов
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии22

Xcode: наверное, лучший способ работы со сторибордами

Время на прочтение5 мин
Количество просмотров50K

Этот пост является вольным переводом статьи Xcode: A Better Way to Deal with Storyboards by Stan Ostrovskiy


Некоторые примеры кода в оригинальной статье устарели (ввиду выхода Swift 3) и в переводе были изменены.


Советы и рекомендации по работе с Interface Builder.


Apple серьезно улучшили Interface Builder в новом Xcode 8. Использование size classes стало более интуитивным, возможность масштабирования сториборда — очень удобной, а полное превью прям в Interface Builder — просто великолепным. Для тех у кого были сомнения насчет использования Interface Builder, это может стать хорошими плюсами.


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


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


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

В вашем проекте есть один файл main.storyboard, который выглядит вот так?



С точки зрения дизайнера, все хорошо: полностью видно UI и навигацию. И это именно то, для чего Interface Builder и был создан.

Но для разработчика это несет множество проблем:

Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии48

Через MVP к VIPER. Часть первая: MVP

Время на прочтение3 мин
Количество просмотров15K

Не так давно я публиковал перевод Почему VIPER это плохой выбор для вашего следующего приложения. И, как это часто бывает, мнение переводчика не совпало с мнением автора оригинальной статьи. Поэтому в этом посте я коротко расскажу как я пытаюсь (пока еще пытаюсь) внедрить VIPER в свои проекты.


Когда я начал работу над своим предыдущим проектом, в команде было ровно два целых ноль десятых мобильных разработчика: один писал версию под Андроид, второй – под iOS.


Естественно, iOS версия создавалась на классическом, рекомендуемом самим Apple, паттерне MVC.


У меня была View: "любимый" сториборд, в котором было over9000 довольно много экранов, и который был похож на это:

Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии12

«Мочим» объекты с помощью Cuckoo

Время на прочтение6 мин
Количество просмотров6.8K

Пост написан по мотивам статьи Mocking in Swift with Cuckoo by Godfrey Nolan


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


Документация


Прочитав документацию на гитхабе мне, к сожалению, не удалось "завести" Cuckoo в моем проекте. Через CocoaPods этот фреймворк был установлен, но вот с Run-скриптом возникли проблемы: предложенный пример не создавал файл GeneratedMocks.swift в папке с тестами, и я бы и не разобрался почему, если бы не нашел через гугл статью, которую упомянул в начале поста.


Итак, пройдем все этапы вместе и...
Всего голосов 14: ↑12 и ↓2+10
Комментарии3

Паттерны проектирования, взгляд iOS разработчика. Часть 1. Стратегия

Время на прочтение4 мин
Количество просмотров15K

Содержание:


Часть 0. Синглтон-Одиночка
Часть 1. Стратегия
Часть 2. Наблюдатель


Напомню, что в этой серии статей, я разбираю книгу "Паттерны проектирования" Эрика и Элизабет Фримен. И сегодня мы изучим паттерн "Стратегия". Поехали.


Откуда растут ноги (и крылья)


Авторы книги рассказывают нам историю о создании приложения SimUDuck. Начнем с реализации начального состояния приложения: у нас есть абстрактный класс Duck и два его наследника: MallardDuck и RedheadDuck. Тут же мы сталкиваемся с первой сложностью: в Objective-C и Swift нет абстрактных классов.


Выходим из ситуации...
Всего голосов 14: ↑13 и ↓1+12
Комментарии6

Паттерны проектирования, взгляд iOS разработчика. Часть 2. Наблюдатель

Время на прочтение7 мин
Количество просмотров12K

Содержание:


Часть 0. Синглтон-Одиночка
Часть 1. Стратегия
Часть 2. Наблюдатель


Сегодня мы разберемся с "начинкой" паттерна "Наблюдатель". Сразу оговорюсь, что в мире iOS у вас не будет острой необходимости реализовывать этот паттерн, поскольку в SDK уже есть NotificationCenter. Но в образовательных целях мы полностью разберем анатомию и применение этого паттерна. К тому же, самостоятельная реализация может обладать большей гибкостью и, в некоторых случаях, быть более полезной.


Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии30

Создаем дизайн-систему

Время на прочтение8 мин
Количество просмотров22K
Вне всякого сомнения, о дизайн-системах меня спрашивают чаще, чем о чем-либо другом. За последние несколько лет я посвятил много времени размышлениям о том, как выстраивать, реализовывать и представлять дизайн-системы для таких продуктов, как Marvel, Bantam и Modulz, и теперь решил, что пришла пора поделиться тем, чему научился в процессе.



Что такое дизайн-система?

Ни для кого не секрет, что дизайнеры любят хорошие UI-киты. Но, по моим наблюдениям, в последнее время все больше внимания уделяется не просто наборам инструментов и руководствам по стилю, а созданию систем, которые связывают воедино целые продукты. Компании вроде Shopify и Intercom формируют особые команды, которые занимаются только и исключительно дизайн-системами. Люди начинают осознавать, как важен системный подход в дизайне. Это внушает оптимизм. Кто знает, возможно, в один прекрасный день появится инструмент для дизайнеров, который не будет предполагать, что в каждом новом проекте мы начинаем все с нуля.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии4

Создание кроссплатформенных приложений с помощью React Native

Время на прочтение8 мин
Количество просмотров42K
Предлагаем вашему вниманию перевод статьи, которая будет интересна начинающим разработчикам.

React Native — это JS-фреймворк для создания нативно отображаемых iOS- и Android-приложений. В его основе лежит разработанная в Facebook JS-библиотека React, предназначенная для создания пользовательских интерфейсов. Но вместо браузеров она ориентирована на мобильные платформы. Иными словами, если вы веб-разработчик, то можете использовать React Native для написания чистых, быстрых мобильных приложений, не покидая комфорта привычного фреймворка и единой кодовой базы JavaScript.

Конечно, мы и раньше слышали обещания об универсальной разработке приложений, с помощью фреймворков наподобие Cordova или Titanium. А что насчёт React Native? В этой статье мы рассмотрим данный фреймворк и особенности его работы и поговорим о том, насколько удобно использовать React Native для написания iOS- и Android-приложений.
Читать дальше →
Всего голосов 26: ↑19 и ↓7+12
Комментарии5

Устройство блоков в Objective-C

Время на прочтение6 мин
Количество просмотров19K
image
В Objective-C есть такая штука, как блоки, которая является реализацией концепции замыканий.

Есть много статей о том, как правильно использовать блоки (когда вызывать copy, как избавиться от retain циклов и т. д.), но при этом устройства блоков обычно не затрагивают. Собственно, давайте восполним этот пробел.
Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии3

Как я сделал тестер-оптимизатор для нахождения прибыльных стратегий на Бирже — 2

Время на прочтение6 мин
Количество просмотров21K
Multidimensional Space Trading Strategies
Рис. 1. Оптимизация многомерного пространства алгоритмов торговых стратегий.

Оптимизация торговых стратегий

В процессе алгоритмической торговли постоянно возникает необходимость настройки параметров алгоритмов торговых стратегий. Сочетания всех возможных параметров превращается в большое многомерное пространство вариантов стратегий. Чтобы получить самые прибыльные и стабильные стратегии нужно исследовать это пространство и подобрать оптимальные параметры для торговли.
Читать дальше →
Всего голосов 26: ↑20 и ↓6+14
Комментарии30

Как искать паттерны в биржевых данных и использовать их в торговле?

Время на прочтение13 мин
Количество просмотров39K
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли.

Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения.

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

Все условия и определения паттернов в статье приведены для примера, вы можете использовать любые критерии.
Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии44

Читаем бинарные файлы iOS-приложений

Время на прочтение7 мин
Количество просмотров10K

На хабре есть много статей о том, как работает рантайм Swift/Objective-C, но для еще более полного понимания того, что происходит под капотом, полезно залезть на самый низкий уровень и посмотреть, как код iOS приложений укладывается в бинарные файлы. Кроме того, безусловно, под капот приходится залезать при решении реверс-инжиниринговых задач. В этой статье мы обсудим самые простые конструкции Objective-C, а о Swift и более сложных примерах поговорим в последующих статьях.


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




Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии6

Как пробудить приложение в iOS: по расписанию и не очень

Время на прочтение3 мин
Количество просмотров12K
Пуш-уведомления – хороший способ взаимодействия с пользователями, их вовлечения и возврата в приложения (кто хоть раз не просыпался ночью от не вовремя доставленного уведомления?). Однако есть у пушей и еще одна интересная функция, о которой не все знают.

Представьте, что ваш мессенджер, так любимый пользователем, отправляется в фоновый режим и там «засыпает». Как ему принять звонок, будучи не подключенным к серверу? Ответ как раз и заключается в пуше – сообщение «будит» приложение, оно переходит в активный режим и уже может принять звонок.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии15

Шпаргалка по пакетному менеджеру NPM

Время на прочтение5 мин
Количество просмотров410K

npm — это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:

Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии11

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

Время на прочтение6 мин
Количество просмотров46K
Я сильно подозреваю, что вы тянете время, чтобы не браться за какое-нибудь важное дело даже в данный момент, читая эту статью. Получается какой-то парадокс, но не беда. Это даже хорошо. Здесь вы познакомитесь с простыми стратегиями, которые в будущем сможете применять для эффективной борьбы с прокрастинацией.



Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии52

Напиши мне денег: переводы через iMessage

Время на прочтение7 мин
Количество просмотров9.3K

image alt text


iMessage в свежих версиях iOS научился работать со сторонними расширениями. Например, теперь можно добавлять котиков к сообщениям или даже переводить кому-то деньги без дополнительных реквизитов. Это же мечта лентяя — отправлять деньги не выходя из мессенджера, поэтому разработка Яндекс.Денег засела за реализацию.


При разработке модной магии без квестов не обошлось, ведь iMessage практически ничего не рассказывает о получателе сообщения. Нет ни номера кошелька, ни ФИО, ни хотя бы статичного ID. Но мы придумали способ узнать об адресате все необходимое для отправки денег.

ну-ка, ну-ка
Всего голосов 23: ↑22 и ↓1+21
Комментарии13

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность