Какой рейтинг вас больше интересует?
|
Главная / Главные темы / Тэг «программированный»
DIY DI в Ruby 2016-08-22 08:35:22
+ развернуть текст сохранённая копия
На Хабре уже была статья, посвящённая Dependency Injection в Ruby, но упор в ней был больше на использование паттерна IoC-container с помощью гемов dry-container и dry-auto_inject. А ведь для использования преимуществ внедрения зависимостей совершенно необязательно городить контейнеры или подключать библиотеки. Сегодня расскажу о том, как по-быстрому реализовать DI Читать дальше →
Тэги: control, dependency, injection, inversion, ruby, веб-сайтов, код, программирование, проектирование, разработка, рефакторинг, совершенный
Поиск IP по картинке 2016-08-20 19:08:09
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/20. ...
+ развернуть текст сохранённая копия
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/20.htmlСижу дома, простудился сильно. А это у меня обычно недели на полторы. В таком состоянии никакая работа невозможна, можно только программировать. Программировать — это не работа, тут ума не надо. Товарищ попросил сделать систему неких беспилотных мониторов техпроцессов для промышленного объекта. Дело нехитрое: взяли мы в домашнем хозяйстве свободную Raspberry Pi (спасибо старым друзьям за подгон), поставили почти без бубнов тамошний Debian, запустил я на нем LXDE (простого startx почему-то в системе не оказалось), привинтил браузер какой-то Midule или Midile или что-то типа того (Chromium отказывался становиться даже после длинных инструкций, да и не нужен он), поставил PHP и Apache (nginx из коробки работать отказался, а настраивать было лень). В общем, получился классический kiosk: грузится система, разворачивается на весь экран только браузер, ну и дальше он уже пляшет. Написал я на JS тонкий клиент, который всякую работу делает и аяксами лазает на местные сервера. Единственная проблема: станки эти находятся в закрытом городе, а ехать туда нет ни сил ни желания ни допусков. Поэтому надо, чтоб всё заработало из коробки. А у системы задача — найти master-сервер в местной сети и с ним взаимодействовать. А его IP, понятное дело, никто заранее не скажет, да и он смениться может. В общем, прикинул я JS к носу и придумал фантастически идиотское решение, которое оказалось очень простым и эффективным: браузер обстукивает все 254 IP в той же сетке, где ему выдали адрес (.1, .2, ..., .154) в попытках загрузить некую уникальную картинку /master/momento.png Если удалось — значит, нашел мастер-сервер, и запоминает его IP в своем браузерном хранилище (а оно всегда у браузеров есть) и отныне работает по аяксу с этим хостом. Если хост лег — снова его ищет. Обстукивание 254 адресов происходит очень быстро и весело, весь процесс занимает пару секунд — нужный хост быстро отзывается, и всю остальную балалайку картинок мы просто грохаем, не дожидаясь загрузки, а браузер сам разберется, не маленький. Сам процесс, понятное дело, приятно виден на дисплее:
Теоретически конечно надо бы png для такой цели всякий раз создавать искусственно с SVG-шифровками внутри — для безопасности, чтоб избежать подделки. Но я решил не париться — сети там, говорят, закрытые, данные не сильно значимы, откуда там и зачем там взлом. Лучше бы мне подумать, какую бы фичу туда привинтить, чтобы послеживала, не подвис ли браузер на третью неделю работы, а если подвис, то перезапустить его или всё LXDE или просто restart сделать. Но думаю не особо напряженно, потому что через час поезд в Харьков (ребенка забирать от дедушки с бабушкой), еду на один световой день и везу кучу инструментов, чтоб бывшей теще поставить кондиционер. В Харькове +30... Дай бог пережить завтрашний день, всё успеть, просверлить и поставить, и вернуться с понедельничка в холодную Москву. А чем вы развлекаетесь летом? это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/20.html
Тэги: программирование
[Перевод] Клон Trello на Phoenix и React. Части 4-5 2016-08-19 11:27:55
< ...
+ развернуть текст сохранённая копия
Оглавление (текущий материал выделен)
- Введение и выбор стека технологий
- Начальная настройка проекта Phoenix Framework
- Модель User и JWT-аутентификация
- Front-end для регистрации на React и Redux
- Начальное заполнение базы данных и контроллер для входа в приложение
- Аутентификация на front-end на React и Redux
- Настраиваем сокеты и каналы
- Выводим список и создаём новые доски
- Добавляем новых пользователей досок
- Отслеживаем подключённых пользователей досок
- Добавляем списки и карточки
- Выкладываем проект на Heroku
Front-end для регистрации на React и Redux
Оригинал
Предыдущую публикацию мы закончили созданием модели User с проверкой корректности и необходимыми для генерации зашифрованного пароля трансформациями набора изменений (changeset); так же мы обновили файл маршрутизатора и создали контроллер RegistrationController , который обрабатывает запрос на создание нового пользователя и возвращает данные пользователя и его jwt-токен для аутентификации будущих запросов в формате JSON. Теперь двинемся дальше — к front-end. Читать дальше →
Тэги: elixir, elixir-lang, erlang/otp, framework, phoenix, rails, react, redux, ruby, trello, веб-сайтов, отсебятина, перевод, программирование, разработка, функциональное
[Перевод] Клон Trello на Phoenix и React. Части 1-3 2016-08-18 19:41:04
+ развернуть текст сохранённая копия
Trello — одно из самых моих любимых приложений. Я пользуюсь им с момента появления, и мне очень нравится то, как оно работает, его простота и гибкость. Каждый раз, начиная изучать новую технологию, я предпочитаю создать полноценное приложение, в котором смогу применить на практике всё, что изучил, для решения реальных проблем, и проверить эти решения. Так что начав изучать Elixir и его Phoenix Framework я понял: я должен на практике использовать весь этот потрясающий материал, с которым познакомился, и поделиться им в виде руководства о том, как реализовать простое, но функциональное посвящение Trello. Читать дальше →
Тэги: elixir, elixir-lang, framework, phoenix, rails, react, redux, ruby, trello, веб-сайтов, программирование, разработка, функциональное
по вашим просьбам поправил Биноник и некоторые глюки движка 2016-08-17 20:52:44
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/17. ...
+ развернуть текст сохранённая копия
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/17.htmlИмею сказать следующее: я КРАЙНЕ не рекомендую использовать для авторизации в движке Фейсбук. В крайнем случае пропишите в личной карточке родной логин-пароль на моем сайте. Почему? Дело в том, что Фейсбук — уникальное по мерзости и подлости учреждение, он постоянно придумывает всё новые и новые гадости, чтобы создать проблемы людям, которые осмелились что-то посещать на других сайтах. Когда внешний сайт (например, мой) отправляет пользователя залогиниться через Фейсбук, сайт понятия не имеет, что это за человек, и никакие логины-пароли Фейсбука тоже на сайт не попадают по вполне понятным причинам безопасности. Авторизационная страница Фейсбука (и не только Фейсбука, так устроен любой трехсторонний авторизационный протокол) открывается в новом изолированном окне, там у пользователя происходит авторизационный секс со своим любимым Фейсбуком, а на сайт по итогу Фейсбук присылает некие идентификаторы — какие сам сочтет нужным. Обычно это линк на аккаунт, имя, фамилия, иногда email. Но email может быть не указан. А пользователей с именем Alex Smirnov я знаю семерых. Поэтому в качестве точного идентификатора сайту взять нечего, кроме линка на аккаунт. Мы полагаем, что уж линк-то на аккаунт ни одна соцсеть в своем уме менять не станет:
facebook.com/lleokaganov Хрен там! Через год Фейсбук вдруг решает, что имена в линке — это лишнее и ненужное, а проще делать ссылку с номером аккаунта: facebook.com/app_scoped_user_id/100001073866092 И начинает присылать после авторизации вот эти адовы номера. Что происходит на внешних сайтах? Мой сайт видит, что авторизовался некто невиданный прежде /app_scoped_user_id/100001073866092, и ему заводится новая учетная запись, которая не имеет никакого отношения к учетке /lleokaganov. Потому что догадаться, что там Фейсбук изменил, сайт не может никак. В результате всё, что было привязано к прошлой карточке (комменты, личная переписка, может даже подзамочный доступ) — всё теряется. Но и это еще не всё! Через год, когда все поматерились, перелогинились и привыкли к новой записи, Фейсбук решает, что он мало потрепал нервы, и надо гадить снова. И тогда он снова меняет строку представления, но не всю, а несколько цифр в серединке. В результате, скажем, товарищ Андрей, купив новый ноутбук, обнаруживает, что на его старом ноутбуке и на новом ноутбуке логины от Фейсбука становятся разные: И это пиздец, который не лечится вообще никак, потому что Фейсбук гадит специально. Проблема в моем движке в том, что движок уже создал вам новую учетку под измененное представление Фейсбука. И перенести изменившийся адрес Фейсбука в старую учетку невозможно без танцев с бубном, потому что две одинаковые учетки делать нельзя. Поэтому если же у вас случилось такое, что логин по Фейсбуку перестал вас узнавать на моем сайте, но вы человек мудрый, и когда-то вписывали родной логин-пароль для этого сайта (или хотя бы email, через который можно восстановить старую учетку), то алгоритм следующий: 1. Залогиниться Фейсбуком, чтобы попасть в ненужную новосозданную учетку. И там удалить из привязки соцсеть Фейсбук (красная иконка рядом со ссылкой. И больше пока не логиниться Фейсбуком! 2. Войти в свою старую учетку по логину-паролю и тоже удалить там сеть фейсбук. После чего Нажать «добавить соцсеть» и добавить Фейсбук. После этого новое представление Фейсбука пропишется в старой учетке, и после логина вы будете попадать снова в нее. Пока Фейсбук опять что-нибудь не подгадит. это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/17.html
Тэги: ада, ахтунг, больше, программирование
Главная / Главные темы / Тэг «программированный»
|
Взлеты Топ 5
Падения Топ 5
|