Вопреки слухам на пространствах девелоперских комьюнити, Rails не становится устаревшей технологией, он не собирается умирать, и остается отличным инструментом для разработки вашего нового проекта. И одна из причин заключается в том, что у Rails имеется достаточно инструментов, чтобы покрыть базовый функционал типичного веб-приложения. Вам не нужно думать о том, как обрабатывать НТТР запросы, что использовать для ввода и получения данных из базы, как отрисовать HTML, который пользователи увидят в своих браузерах, и даже как "вдохнуть жизнь" в пользовательский интерфейс.
Senior Software Developer
Идеальный инструмент для работы с СУБД без SQL для Node.js или Все, что вы хотели знать о Sequelize. Часть 2
Представляю вашему вниманию руководство по Sequelize
.
Sequelize
— это ORM
(Object-Relational Mapping — объектно-реляционное отображение или преобразование) для работы с такими СУБД (системами управления (реляционными) базами данных, Relational Database Management System, RDBMS), как Postgres
, MySQL
, MariaDB
, SQLite
и MSSQL
. Это далеко не единственная ORM
для работы с названными базами данных (далее — БД), но, на мой взгляд, одна из самых продвинутых и, что называется, "battle tested" (проверенных временем).
ORM
хороши тем, что позволяют взаимодействовать с БД на языке приложения (JavaScript
), т.е. без использования специально предназначенных для этого языков (SQL
). Тем не менее, существуют ситуации, когда запрос к БД легче выполнить с помощью SQL
(или можно выполнить только c помощью него). Поэтому перед изучением настоящего руководства рекомендую бросить хотя бы беглый взгляд на SQL
. Вот соответствующая шпаргалка.
Это вторая из 3 частей руководства, в которой мы поговорим о простых и продвинутых ассоциациях (отношениях между моделями), "параноике", нетерпеливой и ленивой загрузке, а также о многом другом.
Я постараюсь быть максимально лаконичным (надеюсь, без ущерба для полноты изложения материала). Я также постараюсь излагать материал максимально простым языком. Большинство примеров, приводимых в руководстве, заимствованы из официальной документации.
Вертебро-базилярная недостаточность — болезнь программиста с тысячью лиц
Наш организм куда сложнее любой компьютерной программы. И если даже при работе с кодом бывает трудно определить истинную причину того или иного бага, то что тогда говорить о «неполадках» в человеческом теле? Именно поэтому банальный совет «если чувствуете недомогание, обратитесь к врачу» никогда не потеряет своей актуальности, ведь один и тот же симптом может быть следствием абсолютно разных патологий, и только опытный специалист способен выявить истинную причину его возникновения. Впрочем, не будем голословными, а лучше рассмотрим конкретный пример.
Если при длительной работе за ПК вы отмечаете снижение остроты зрения, у вас появляется чувство инородного тела в глазах и их покраснение, это вполне может быть проявлением компьютерного зрительного синдрома. Если вас бросает то в жар, то в холод, вы обильно потеете и не можете уснуть, даже если сильно устали, возможно, у вас имеет место соматоформная вегетативная дисфункция. Если периодически у вас возникают головокружения, появляются шум в ушах и головные боли, сопровождаемые перебоями в работе сердца, это может быть следствием гипертонической болезни.
Однако в то же время все перечисленные симптомы, столь непохожие друг на друга, характерны и для вертебро-базилярной недостаточности (ВБН), а причиной развития данного недуга может оказаться искривление шейного отдела позвоночника, вызванное неправильной осанкой при длительной работе за компьютером. Что же это за болезнь и как не допустить ее развития? Об этом мы и расскажем в сегодняшнем материале.
Генерация подземелий и пещер для моей игры
На этой неделе я начал работать над новой темой: генерацией подземелий и пещер. Я использовал разбиение пространства для генерации комнат, алгоритмы генерации лабиринтов для генерации коридоров и клеточные автоматы для придания пещерам более естествненного внешнего вида.
Разбиение пространства
Существует множество способов генерации комнат для подземелья (случайное размещение, генерация на основе агентов, с использованием separation steering behavior или физического движка, и т.д.). Но мой любимый метод — это разбиение пространства, потому что оно легко контролируется и расширяется.
Способов разбиения пространства тоже очень много: разделение на сетки, двоичное разбиение пространства, разбиение пространства деревом квадрантов, диаграммы Вороного и т.д. Я решил использовать двоичное разбиение пространства, потому что оно хорошо подходит для генерации прямоугольных комнат. Этот метод получил популярность благодаря статье на RogueBasin.
Единственная сложность этого алгоритма — выбор позиции разделения. Если мы не наложим ограничение на позицию разделения, то будем получать странные разбиения пространства:
Такого поведения можно избежать несколькими способами. Один из них — ограничить позицию разделения двумя соотношениями длин сторон, например, в интервале от 30% до 70% или от 40% до 60%. Другой способ — использовать вместо равномерного распределения нормальное или биномиальное, благодаря этому повысится вероятность разделения по центру стороны, а не по краям. Эти способы устраняют проблему, но сложно понять, как конкретно параметры влияют на окончательный результат.
Очередные умные часы своими руками
Вдохновившись некоторое время назад статьей «Умные часы своими руками за 1500р.», я тоже решил попробовать сделать подобный девайс.
Эта статья не позиционируется как руководство к действию или инструкция, скорее как указание на ключевые моменты, с которыми мне пришлось столкнуться. Быть может, кому-то она послужит источником вдохновения и полезной информации.
Подбор компонентов, разводка платы, пайка в суровых условиях, 3D-печатный корпус и JavaScript на часах — под катом. Welcome!
Невидимые враги
Глубокое обучение и Raspberry PI
«Что у нас есть?» — спросил горбоносый поворачиваясь.
«Алдан-3», — сказал бородатый.
«Богатая машина, — сказал я.”[1]
Недавно я решил заняться изучением глубокого обучения. На работе мне выдали новую карточку с поддержкой CUDA и шеф выразил пожелание что эта вершина инженерной мысли позволит нашей лаборатории сделать рывок вперёд, ну или по крайней мере, не отстать от массы конкурентов. У меня уже был некоторый опыт общения с Tensor Flow, но в этот раз я решил попробовать Torch. Привлекало что он написан на языке Lua и C, является достаточно легковесным и легко расширяемым через FFI. И ещё мне не нравится Python.
Недавно на Хабрахабр я наткнулся на статью, в процессе обсуждения которой я вспомнил что где-то в тумбочке у меня пилится Raspberry Pi, модель B+ и мне захотелось посмотреть — а смогу ли я поднять на ней torch и запустить что-нибудь несложное.
Робот Xiaomi MITU: не убийца, а сам по себе
Лучшие трекеры и часы для детей
Благодаря GPS отслеживание разного рода объектов, определение собственных и чужих координат в наше время — не проблема. И это хорошо, поскольку многие родители хотят знать, где находятся их дети, в каждый конкретный момент времени. И речь идет, прежде всего, о маленьких детях, безопасность которых — первоочередная задача взрослых.
GPS-модули сейчас настолько малы, что их можно без труда встроить в гаджеты практически любых размеров. Например, умные часы и трекеры. Для детей есть несколько отличных моделей, о которых сейчас и поговорим.
Wire Cutters: анимационный фильм про роботов, не поделивших кристаллы
Обычно в анимационных фильмах все заканчивается хорошо. Взять того же Wall-e: начинается все очень грустно, но зато концовка просто отличная. Но могло бы быть и по-другому. Например, так, как в мультике «Wire Cutters». Здесь все начинается чуть похоже, но концовка совершенно иная.
Самое интересное, что создан этот мультик силами всего одного студента — Джека Андерсона. По его словам, источником идей и вдохновения (как же без него) служили мультики от Disney и Pixar. Сюжет мультика отличный, хотя и немного невеселый.
Почти DIY 3d сканер для дома
Пару лет назад попалась мне на глаза статья на хабре о 3D-сканере за 30$, и очень меня эта тема заинтересовала, хотя быстро пришло понимание того, что ни о каких 30$ для качественного сканирования не может быть и речи.
Но основной плюс, который я вынес из статьи – программа для сканирования David-3D, к которой действительно есть хорошее руководство на русском языке и, что немаловажно, покупка лицензии — это последнее, что требуется, так как ограничение у бесплатной версии только на сохранение результата сканирования. Все остальное работает в полной мере, а значит вполне можно тестировать программу, настройки и свое железо сколько угодно. А если вам и результат не требуется с высокой точностью – то и вовсе без покупки лицензии можно обойтись.
Как определить дубликаты картинок с помощью PHP
Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
Спящий режим и автономное питание ESP8266
Тест для проверки цветового разрешения монитора или телевизора при подключении к компьютеру по цифровому видеоинтерфейсу
к/ф «Кавказская пленница»
Телевизор в качестве монитора?
В последние годы все более популярным становится использование телевизора в качестве домашнего компьютерного монитора.
И действительно — если еще несколько лет назад типичным для компьютерных мониторов Full HD разрешением (1920x1080) могли похвастаться лишь телевизоры с диагональю 40" и более, слишком большие для настольного монитора, то сейчас нетрудно найти телевизор с Full HD разрешением и с вполне «мониторной» диагональю 32" и меньше. Соответственно и размер пикселя при этом получается близким к «типовому» для настольных мониторов 0,28 мм ± 10% (ну, может быть чуть больше). А если кому-то такой пиксель покажется великоват, то с появлением доступных по цене бытовых телевизоров с разрешением 4k Ultra HD (3840x2160) размер пикселя вполне может конкурировать и с Retina.
К тому же широко распространенные в бытовых телевизорах IPS матрицы по компьютерным меркам считаются весьма «продвинутыми», и ими обычно оснащаются весьма дорогие «профессиональные» мониторы.
Казалось бы вот оно, идеальное решение для экономного домашнего пользователя — купить
Однако иной раз результатом такого приобретения становится полное разочарование: компьютерная картинка на экране телевизора оказывается намного хуже, чем на простеньком старом мониторе, вместо которого этот телевизор собственно и приобретался.
Причин этого может быть множество, начиная от несоответствия разрешения соединяющего компьютер с телевизором видеоинтерфейса разрешению телевизионной матрицы, способности телевизора выводить картинку «пиксель-в-пиксель», настроек видеокарты (в частности, Overscan), настроек самого телевизора (например, резкости), проблем с кабелем, и так далее.
В данной статье мы рассмотрим только одну из возможных причин, а именно способность видеоинтерфейса, которым подключен телевизор или монитор к компьютеру, передать полное цветовое разрешение 4:4:4.
Для начала собственно тест:
Если на экране Вам отчетливо видна появляющаяся надпись 4:4:4, и лишь слегка угадывается 4:2:2, то значит видеоинтерфейс компьютер-монитор передает полное цветовое разрешение, и на этом собственно можно закончить тест и чтение статьи.
Тем же, кому интересно, как действует этот тест, а также тем, кто видит 4:2:2 и не видит 4:4:4 (или видит примерно одинаково и 4:4:4, и 4:2:2), и при этом хочет попробовать исправить ситуацию добро пожаловать под кат
Как интегрировать email и мессенджер для командной работы
Однако до сих пор нет ни одного сервиса, который бы вернул эпоху Outlook и Blackberry (то есть примерно 2004 год). Тогда люди отправляли сотни коротких email-писем, которые похожи на нынешние сообщения в чате. Как правило адресатов таких посланий было мало — несколько самых близких коллег. Blackberry позволял людям оставаться на связи даже на ходу.
Возможно, в том, что эта эпоха ушла, нет ничего плохого, но ведь все еще остались люди, которые используют email как чат.
Облака — белогривые лошадки или безопасный ownCloud для «маленьких» в FreeNAS
ownCloud, как утверждает Википедия — это Свободное и открытое веб-приложение для синхронизации данных, расшаривания файлов и удалённого хранения документов в «облаке». И, как мне кажется, довольно интересное решение для организации собственного домашнего облака.
Однако, ownCloud, устанавливающийся в виде плагина в системе FreeNAS, да и просто из коробки, имеет ряд недостатков, от которых хотелось бы избавится даже при использовании дома:
- Во-первых, устанавливается в связке с SQLite, что подходит только если у вас небольшое кол-во файлов и пользователей, и абсолютно не подходит, если вы планируете синхронизацию с помощью клиента. У меня же хранилище уже расползлось почти на 5Tb и установленный таким образом ownCloud просто отказывался видеть часть файлов. Да и без синхронизации отдача от облака не велика. Заменим базу данных на MariaDB.
- Во-вторых, отсутствует работа по https, а мне совсем не нравится мысль о том, что кто-то может перехватить мои файлы. Включим https.
- В-третьих, начисто отсутствует защита от банального подбора пароля методом брутфорса. Защитимся от брутфорса с помощью fail2ban.
- В-четвёртых, мне лень часто просматривать логи на предмет взлома, но очень хочется оперативно узнавать о таких попытках. Настроим push-оповещения о попытках подбора пароля с помощью сервиса pushover.net.
Еще один вариант динамического DNS на своей площадке или как я отказался от dyndns
Сначала можно было пользоваться одним доменным именем на учетной записи бесплатно. Позже доменное имя начало сбрасываться каждый месяц — это периодически требовало усилий по восстановлению работы. Другие бесплатные сервисы не приглянулись и в какой-то момент я подписался на их платную услугу за $25 в год, что дало мне возможность использовать до 30 доменных имен.
Было неудобство — клиентская программа под Windows визуализирует все доменные имена моей учетки при настройке и любой клиент случайно или умышленно может повредить привязку чужого доменного имени. В общем, гнетет, но терпимо. На прошлой неделе пришла пора продлевать на год подписку. Цена выросла до $30, да и рубль упал к этому моменту до 60 руб за доллар. Жалко мне стало рублей и я таки решил дожать динамический DNS на своей площадке.
Файловая система Linux полностью на tmpfs — скорость без компромиссов
Предыстория
Так сложилось, что уже пять лет мой раздел ntfs с операционной системой Windows располагается на рамдиске. Решено это не аппаратным, а чисто программным способом, доступным на любом ПК с достаточным количеством оперативной памяти: рамдиск создается средствами загрузчика grub4dos, а Windows распознаёт его при помощи драйвера firadisk.
Однако до недавнего времени мне не был известен способ, как реализовать подобное для Linux. Нет, безусловно, существует огромное количество линуксовых LiveCD, загружающихся в память при помощи опций ядра toram, copy2ram и т. д., однако это не совсем то. Во-первых, это сжатые файловые системы, обычно squashfs, поэтому любое чтение с них сопровождается накладными расходами на распаковку, что вредит производительности. Во-вторых, это достаточно сложная каскадная система монтирования (так как squashfs — рид-онли система, а для функционирования ОС нужна запись), а мне хотелось по возможности простого способа, которым можно «вот так взять и превратить» любой установленный на жесткий диск Linux в загружаемый целиком в RAM.
Ниже я опишу такой способ, который был с успехом опробован. Для опытов был взят самый заслуженный дистрибутив Linux — Debian.
Поиск взаимосвязей на примере Нефть-Рубль
Во-первых надо определить, имеет ли вообще задача смысл. Почему нефть и рубль должны/могут быть взаимосвязаны? Вкратце, модель такая: экспортёры продают нефть за доллары, а затем продают доллары, чтобы получить рубли для расчётов внутри страны. Механизм крайне упрощён, надо учитывать объёмы добычи-продажи, что эскортируют не только нефть, не всегда экспортёры продают доллары, на курс валют влияет ЦБ интервенциями и т.д. И тем не менее, будем считать, что модель более-менее рабочая, то есть, что существуют фундаментальные причины для взаимосвязи цены нефти и курса рубля.
Установка и запуск Android-приложений на Linux
Как известно, многие Android-приложения можно нативно запускать на Chrome OS благодаря библиотеке Chrome App Runtime.
С помощью расширений chromeos-apk и ARChon запуск Android APK стал возможен и на других ОС.
В этой публикации я расскажу, как установить произвольное Android-приложение на Ubuntu 14.04.
Information
- Rating
- Does not participate
- Location
- Окленд, Auckland, Новая Зеландия
- Date of birth
- Registered
- Activity