Search
Write a publication
Pull to refresh
8
0
Игорь Штельмах @WebPhd

User

Send message

Well.js – еще один подход к модульной разработке на JavaScript

Reading time7 min
Views9K
По названию публикации некоторые могли подумать: «Что опять?! Еще один велосипед?» Спешу обрадовать – нет. Well.js (Github) – это обертка для существующих AMD-решений (по-умолчанию для Require.js), основная идея которой сделать работу с модулями и их зависимостями, как показалось автору, более привлекательной.

Например, возьмем модуль Require.js:

define(['views/common/basic-page', 'views/partials/sidebar', 'utils/helper', 'models/user'  ], 
	function (BasicView,SidebarView, Helper, UserModel) {  
	//тело модуля  
});  

И легким движением руки заменим на это:

wellDefine('Views:Pages:Overview', function(app, modules) {  
	this.use('Views:Common:BasicPage')  
		.use('Views:Partials:Sidebar')  
		.use('Utils:Helper', {as: 'MyHelper', autoInit: false})  
		.use('Models:User', {as: 'UserModel'})  
		.exports(function(options){  
			/* Теперь к зависимостям можно получить доступ через:  
			this.BasicPage  
			this.Sidebar  
			this.MyHelper  
			this.UserModel  
			*/  
		});  
});  


Кому интересно, для чего все это надо, прошу под кат.
Читать дальше →

Экспресс-курс «Проектное планирование»

Reading time8 min
Views22K

Везде ли применимо проектное планирование


Любую деятельность компании или отдельного человека можно разделить на два состояния:

  1. Я делаю (сделаю) что-то сейчас;
  2. Я буду это делать в будущем.

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

  • купить прямо сейчас;
  • заказать прямо сейчас;
  • позвонить прямо сейчас.

На вас сваливается десяток задач которые надо сделать прямо сейчас. Как правило, это задачи на «на пять минут», хотя иногда подготовка к выполнению самой задачи может занять и больше пары часов. Если такое происходит, тогда весь поток задач, которые надо сделать «прямо сейчас», останавливается, пока короткая задача не будет завершена, Однако, каким-то мифическим образом все такие задачи «рассасываются» к концу недели.
Читать дальше →

Yii2 тестируем на HHVM

Reading time4 min
Views22K
Всем привет! Недавно зарелизился Yii2 с кучей новых фич и поддержкой HHVM, разработчики говорят о совместимости в 99%. Попробуем завести все это дело и опробовать в действии на живых примерах, где будут выборки из БД, сериализация (десирализация) данных, json — encode, decode, работа с ActiveRecord. Но прежде немного о самой машине. HHVM — экспериментальная виртуальная машина от Facebook для исполнения и JIT компиляции PHP кода. За счет неё можно увеличить производительность в несколько, а то и пять — девять раз на ресурсозатратных задачах. Проект живет и активно развивается. По поводу выхода новых версий хорошо написано в статье на хабре.
Читать дальше →

Семь принципов создания современных веб-приложений

Reading time19 min
Views189K
Эта статья основана на моей презентации с конференции BrazilJS в августе 2014 года. Она базируется на идеях, о которых я писал в блоге недавно, в основном, в связи с UX и производительностью.

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

JavaScript бесспорно стал незаменимым инструментом для разработчиков фронтенда. Сейчас сфера его применения расширяется на другие области, такие как серверы и микроконтроллеры. Этот язык программирования выбрали престижные университеты, чтобы обучать студентов основам информатики.

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

  • Должен ли JavaScript использоваться как замена функциям браузера: история, навигация, рендеринг?
  • Умирает ли бэкенд? Нужно ли вообще рендерить HTML?
  • Правда ли, что будущее за приложениями на одной странице (Single Page Applications, SPA)?
  • Должен ли JS генерировать страницы на веб-сайте и рендерить страницы в веб-приложениях?
  • Нужно ли использовать техники вроде PJAX или TurboLinks?
  • Каково точное отличие между веб-сайтом и веб-приложением? Должно ли остаться что-то одно?
Читать дальше →

20 ноября — запуск первой стратегической MMO-игры для… программистов

Reading time4 min
Views22K
В следующий четверг состоится запуск проекта, над которым мы работали последние несколько месяцев. Screeps — первая известная мне стратегическая игра в MMO-песочнице, созданная для программистов. Вместо традиционного Point'n'click, геймплей заключается в написании и постоянном улучшении программы для AI ваших юнитов на JavaScript, которая управляет ими непрерывно и автономно — даже когда вы не онлайн. Это радикально новая идея, и если вы программист, вам определенно стоит на это взглянуть.



Если вы программист, то не думали ли вы в предыдущий раз, когда играли в свою любимую онлайн-игру, чтобы было бы здорово как-нибудь ее автоматизировать? Зачем тратить время своей жизни на выполнение действий, которые легко выполняются ботом? Почему вы должны каждый день заходить в игру, чтобы получить награду, если с этим легко справился бы скрипт? Больше никакой бессмысленной траты времени на действия, которые под силу и ребенку, мы же способны на большее. В Screeps скрипты не просто разрешены, Screeps это игра о скриптах!

Под катом технические и игровые подробности.
Читать дальше →

Анализ HTTP-трафика с Mitmproxy

Reading time8 min
Views105K
mitmproxy

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

Инструменты, традиционно используемые для прослушивания трафика (tshark, о котором мы уже писали, а также ngrep и tcpdump) для этой цели подходят плохо: функциональность для работы с протоколом HTTP у них ограничена.

Для анализа HTTP-трафика существует более специализированное, простое и эффективное решение. Знакомьтесь: mitmproxy. На русском языке подробных публикаций о нем почти нет. В этой статье мы поделимся своим опытом работы с mitmproxy и надеемся, что и вам он окажется полезным.
Читать дальше →

Оптимизация для начинающих, или о пользе профилирования

Reading time5 min
Views18K
Попалась мне задача написать на PHP оптимальный алгоритм вставки нового значения в упорядоченный массив. Причем аргументировано доказать, что именно этот алгоритм лучший. Для этого предлагалось написать три варианта и выбрать из них лучший. Конечно же я знаю, что лучший метод поиска — бинарный, но раз сказали доказать, что он лучший, так и быть, напишу еще два. С таким настроем и уверенностью в будущем результате я и принялся кодить.

Что из этого получилось приглашаю начинающих программистов почитать, а опытных обсудить.
Читать дальше →

Codeship.io: бесплатный CI сервер для приватного репозитория Github/Bitbucket

Reading time3 min
Views28K

Сразу заинтригую: в результате мы получим связку бесплатного приватного git репозитория на Bitbucket и бесплатный* Continious Integration сервер (SAAS), который будет собирать проект и прогонять все тесты после каждого пуша.
* — бесплатная подписка дает возможность тестировать 5 приватных репозиториев и максимум 100 билдов в месяц.

Мне этого для личного проекта достаточно.

Приведу пример для PHP, проект на Symfony2, но данный сервис поддерживает ещё и Ruby, Node.js, Python.

Читать дальше →

Почему будущее за удалённой работой (часть 2)

Reading time5 min
Views61K


Немногим менее года назад я написал первую часть этой статьи, пообещав, что вторая будет посвящена рассмотрению самых частых возражений. Конечно, если кто-то и ждал продолжения, вероятно успел уже прочно забыть за это время. Утешая себя мыслью, что лучше всё-таки поздно, чем никогда, берусь наконец исправить ситуацию. Итак.
Читать дальше →

Пишем простой плагин для Sublime Text 2

Reading time3 min
Views33K
Введение

Странно, но поискав на Хабре упоминания текстового редактора Sublime Text 2 я почти ничего не нашел. Спешу исправить положение и рассказать хабраюзерам об этом прекрасном инструменте. Вначале очень коротко расскажу о том чем же он так хорош, потом напишем простой но полезный плагин.
Читать дальше →

Ветровая турбина из 3D-принтера: AirEnergy3D

Reading time1 min
Views27K
В прошлом месяце я писал о ветровой турбине WindPax. Это походный вариант, вырабатывающий 25W и способный зарядить ваш смартфон. Сейчас же на Kickstarter представили еще одну ветровую турбину, на этот раз родом из Польши и напечатанную на 3D-принтере.

Фото первого прототипа.
image

Читать дальше →

Google Play — работаем легально!

Reading time4 min
Views180K
Привет, Хабр!



Сегодня, я хочу рассказать о том как сделать свое хобби по разработке Android-приложений пусть небольшим, но официальным бизнесом. О том, как легально получать деньги, заработанные на Google Play, о «страшном» валютном контроле и «таинственном» паспорте сделки.
Читать дальше →

Виджет для вывода пользовательских данных на Android

Reading time1 min
Views9.9K
Universal Widget позволяет размещать на рабочем столе Android информацию о любой из ваших систем, описанную в формате JSON. Например, статистику посещений вашего сайта, информацию о заказах в интернет-магазине, загрузку процессора на сервере и т.д.



Три простых шага для размещения информации на рабочем столе:

1) Создайте скрипт – провайдер данных в формате JSON
2) Установите Universal Widget
3) В настройках виджета задайте адрес скрипта — провайдера данных, а также интервал обновления
Читать дальше →

Андроид: [DirectoryBind] Простой способ связать внешнюю sd карту и внутреннюю память, чтобы освободить место

Reading time4 min
Views778K
Сразу оговорюсь, что речь пойдет не о программах типа link2sd. Принцип похож, но связывать мы будем не программные каталоги, а каталоги данных этих программ, например /sdcard2/Navigon -> /sdcard/Navigon или /mnt/extSdCard/Books -> /sdcard/Books и т.д.
Кроме того, нам нужен рут (куда ж без него). Кстати, после того как я узнал про эту программу, это для меня очередной аргумент за root.

Многие владельцы андроид смартфонов или таблеток с небольшей встроеной памятью наверняка сталкивались со следущей проблемой: вставлена большая sd карта (например 16, 32 или даже 64 Гигабайт), но после установки нескольких тяжеловесных программ наше устройство или очередная программа с наглостью заявляет, что на карте не хватает места. Иногда сама программа небольшая, но после установки лезет в интернет и тянет на смартфон гигабайты данных.
В очередной раз получив сообщение «Нет места» и заглянув на карточку видим, что она практически пуста, зато внутренняя память устройства забита под завязку.
Это происходит потому, что внутренняя память часто используется как каталог по умолчанию для многих программ. Дело в том, что она монтируется как /sdcard, что исторически всегда было внешней sd картой (раньше так оно и было на всех смартфонах). Внешняя же sd карта монтируется в этом случае как /sdcard2, /mnt/sdcard2, /mnt/extSdCard или даже /sdcard/.externalSD. Я так понимаю, что это делается изготовителями, чтобы устройство работало из коробки, т.е. совсем без sd карты.

Многие «недобросовестные» программы всегда хотят читать/писать данные из/в каталог /sdcard/НазваниеПодставить. Редко это можно изменить в настройках программы.
В результате имеем, что имеем, и несколько возможностей чтобы поправить сложившееся положение:
  • перемонтировать каталоги: внешнюю sd карту на /sdcard, а внутреннюю на /sdcard2 (нужен рут, если нет в настройках). По моему недостаточно гибкий способ, т.к. теперь уже внутренняя память лежит у нас мертвым грузом. Еще один недостаток этого способа — скорость работы системы.
    Если вы все же решитесь пойти этим путем, внизу я добавил как это можно сделать.
  • создать символьную ссылку на внешние каталоги, как нам нужно, например
    ln -sf /mnt/externalSD/Books /sdcard/Books.
    Не работает, если файловая система не поддерживает симлинк (например fat).
  • при загрузке андроида примонтировать внешние каталоги на внутреннюю память, используя что-то типа
    mount -o bind /mnt/externalSD/Books /sdcard/Books
    и добавить это в автозагрузку, например используя Autostart (root), чтобы это происходило автоматически при включении или после перезагрузки устройства.

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

Читать дальше →

Мультиварка — умная кастрюля или «не доведенный до ума» гаджет

Reading time12 min
Views645K

Этот пост будет полезен всем, кто хотя бы иногда что-то готовит сам, а также помогает или мешает это делать другим.
Из него можно узнать, что это за гаджет — мультиварка, какие у нее технические возможности и невозможности, внутренность, наружность, достоинства (много) и недостатки (тоже много). Расскажу кое-что и о маленьких мультиварочных хитростях, а также позволю себе общее лирическое отступление о программировании на кухне.
Цель поста — рассказать про мультиварки, как класс объектов, не выделяя особо его представителей, но, чтобы не вести разговор о сферической мультиварке в вакууме, сделаю основным примером разбора мою модель — Panasonic SR-TMJ181.
Те, у кого нет мультиварки узнают, нужна ли она им, но и те, у кого она есть, надеюсь, без новых знаний не останутся.
Читать дальше →

Радионяня из Android смартфона

Reading time3 min
Views88K
Доброго времени суток хабровчане.

Дети — это прекрасно! Особенно прекрасно, если дети спят. Можно заняться своими делами: перекурить, принять душ, отдохнуть, поиграть… почитать хабр.
image

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

Жизнь с планшетом или список приложений для Android

Reading time7 min
Views312K
Привет!

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

Пост написан для устройств на базе операционной системы Android, но думаю и в других системах есть аналоги.
Читать дальше →

Пишем виджет ХабраКарма ex-CarmaWidget для Android

Reading time17 min
Views32K
Вчера я таки обновил CarmaWidget, виджет, который отображает вашу карму на рабочем столе смартфона. Сегодня я расскажу о том, как написать виджет.

image

Принцип таков:
  • Класс — настройки для виджета, который запускается при добавлении последнего на рабочий стол.
  • Класс — провайдер информации для виджета, в котором живут все таймеры.
  • База данных — для хранения информации о пользователе.
  • Два layout'а — для виджета и настройщика.


Читать дальше →

Jiayu G3 — Китайский телефон с европейским качеством

Reading time3 min
Views720K

— CPU: MTK 6577 Dual Core 1.0GHz
— GPU: PowerVRTM SGX Series5 3D
— OS Android 4.0 Ice Cream Sandwich (ICS)
— Память: оперативная (RAM): 1GB/ внутренняя (ROM): 4GB
— Поддерживает Micro SD Memory Card (TF-Card), до 32GB
— Габариты: 135 x 65 x 10.8 mm
— Масса: 156 g
— Экран: 4.5 дюйма, матрица IPS, ёмкостный мультитач(7 точек) и стекло Gorilla Glass
— HD-разрешение (1280 x 720 pixels)
— Поддержка сетей: (2 сим-карты) Network Dual SIM G+G W+G
— 2G:GSM 850/900/1800/1900MHz
— 3G:WCDMA 850/900/1900/2100MHz
— Встроенный GPS & A-GPS
— Bluetooth with EDR & A2DP
— Wi-Fi IEEE 802.11 b/g
— Две камеры: основная 8.0 / фронтальная 1.3 мегапикселей
— Gravity Sensor, Proximity Sensor, Light Sensor
— Литий-ионная батарея 2750 mAh
Читать дальше →

Information

Rating
Does not participate
Location
Винница, Винницкая обл., Украина
Date of birth
Registered
Activity