Pull to refresh
0
0
kihamo @kihamo

User

Send message

Кроссдоменный AJAX на основе CSS

Reading time1 min
Views2.3K
Недавно столкнулся с проблемой как передать данные с сервера A в
javascript на сервер B, если на сервере B серверный код писать нельзя,
а на А можно.
И нашел элегантное решение.
Суть решения в том, что для использования предлагается объект
CSSHttpRequest, предоставляющий выполнять AJAX-запросы на базе CSS. Это
работает, поскольку CSS не имеет ограничений безопасности, которые имеет
стандартный объект XMLHttpRequest.
В отличие от JSONP имеет ограничение только на GET-запросы. Также есть некоторые проблемы совместимости с браузерами
Код выглядит следующим образом.
CSSHttpRequest.get(<br> "http://www.nb.io/hacks/csshttprequest/hello-world/",<br> function(response) { alert(response); }<br> );

Данные кодируются на сервере в виде 2-х килобайтных цепочек. Ответ
возвращается в в виде:
 #c0 { background: url(data:,Hello%20World!); }<br> #c1 { background: url(data:,I’m%20text%20encoded%20in%20CSS!); }<br> #c2 { background: url(data:,I%20like%20arts%20and%20crafts.); }

На сервере B с помощью javascript создается невидимый IFRAME, в который
и загружается CSS.
Это также работает и в XHTML.

Данное решение совместимо с IE6+, Firefox 2+, Safari 3+, iPhone.
Вид лицензии: Apache License
Total votes 33: ↑28 and ↓5+23
Comments14

Как получить наибольшую выгоду от Crash Reports или упрощаем себе жизнь

Reading time3 min
Views15K
Привет хабродроидеры!
Если ваше приложение падает в production и вам нужно быстро понять почему, на каком девайсе, с какой прошивкой и конфигурацией, то этот маленький топик расскажет об одном способе решения данной проблемы.
Под катом описание возможностей ACRA.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments16

nginx+FastCGI(over spawn-fcgi)+lua

Reading time4 min
Views9.2K
И так у нас есть задача. Заставить работать вместе легкий веб-сервер nginx и lua(в данном случае lua через wsapi(lua web server API)-fastcgi).
Что нам потребуется? Ну для начала голова на плечах. Ну то есть не то, что бы она особо нужна, но пригодится.
А далее… А далее сервер в нашем случае с GNU/Linux на борту(но думаю что сойдет и, скажем FreeBSD), мы будем рассматривать на примере Ubuntu GNU/Linux, так сложилось исторически.
интересно?
Total votes 8: ↑5 and ↓3+2
Comments8

Классы в lua, или избавляемся от двоеточия

Reading time4 min
Views29K
Как всем известно, в lua нет как таковых классов и объектов. Однако есть метатаблицы и синтаксический сахар.
С помощью указанных механизмов достаточно просто реализовать подобие классов.
В итоге и получается нечто такое:
Самый простой класс
local MyClass = {} -- the table representing the class, which will double as the metatable for the instances
MyClass.__index = MyClass -- failed table lookups on the instances should fallback to the class table, to get methods

-- syntax equivalent to "MyClass.new = function..."
function MyClass.new(init)
  local self = setmetatable({}, MyClass)
  self.value = init
  return self
end

function MyClass.set_value(self, newval)
  self.value = newval
end

function MyClass.get_value(self)
  return self.value
end

local i = MyClass.new(5)
-- tbl:name(arg) is a shortcut for tbl.name(tbl, arg), except tbl is evaluated only once
print(i:get_value()) --> 5
i:set_value(6)
print(i:get_value()) --> 6

(взято с lua-users.org/wiki/ObjectOrientationTutorial)

Всё это конечно хорошо, даже при определённой сноровке можно реализовать наследование…
Но где public и private члены класса? Дефакто в этом примере они все public. Да ещё и надо помнить, где использовать двоеточие:
MyClass:myFunc()

а где просто одну точку:
MyClass.myOtherFunc()

А статические члены класса? Неужели придётся отказываться?
Вот я и не захотел отказываться, и начал колхозить...
Total votes 10: ↑5 and ↓50
Comments13

Основы декларативного программирования на Lua

Reading time12 min
Views48K
Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

Луа — мультипарадигменный язык программирования. Одна из сильных сторон Луа — хорошая поддержка декларативного стиля. В этой статье я кратко опишу базовые декларативные средства, предоставлямые языком Луа.
Читать дальше →
Total votes 69: ↑64 and ↓5+59
Comments18

Советы Google по кодированию на языке Python. Часть первая: советы по программированию

Reading time13 min
Views113K

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
Читать дальше →
Total votes 122: ↑109 and ↓13+96
Comments58

Raspberry Pi: измеряем влажность и температуру с помощью DHT11/DHT22

Reading time5 min
Views221K
На Хабре уже публиковалась статья о подключении датчика температуры DS18B20 к Raspberry Pi. В нашем новом проекте, который строится на Raspberry Pi, понадобилось измерять не только температуру, но и влажность. Я расскажу, как подключить недорогие китайские датчики влажности к Raspberry Pi. Просмотрев несколько вариантов различных датчиков, остановился на двух наиболее массовых на рынке датчиков. Это DHT11, который привлек своей ценой $3 (с доставкой) и датчик DHT22 (около $10 с доставкой).
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments33

«Отказоустойчивая» система на базе Ubuntu и btrfs

Reading time5 min
Views41K
Я как гик, всё ещё имею привычки, постоянно эксперементировать с системой: пересобирать, ставить несталбильные RC ядра, включать experimental ветки обновлений. Часто, я бы даже сказал слишком часто ломаю систему (мой личный рекорд, 2 недели без переустановки).

Что значит ломаю? Когда что-то работает крайне нехорошо, например часто вылетающий LibreOffice и Compiz который любит подвисать, я или пытаюсь реконфигурировать систему, но это достаточно долго и муторно.

Собственно, к чему я веду.

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


how-to или очередной велосипед.
Читать дальше →
Total votes 23: ↑15 and ↓8+7
Comments31

Квадрокоптер дополненной реальности — обзор AR.Drone 2.0

Reading time9 min
Views155K
На прошедший недавно ДР мне подарили AR.Drone 2.0. На хабре были обзоры первой версии, а я хочу рассказать что же изменилось во второй и поделиться впечатлениями от использования этого квадрокоптера.
По позиционированию разработчиков, AR.Drone это не только ценный мех просто квадрокоптер (некоторые читают название как Эир Дрон), а квадрокоптер с задумкой под идею дополненной реальности (Augmented Reality Drone). Дрон работает на Linux, управление им осуществляется с iOS и Android устройств, для него есть игровые приложения дополненной реальности, а еще у него открытый API.
Но давайте по-порядку...
Total votes 88: ↑82 and ↓6+76
Comments78

Свой DynDNS на коленке

Reading time2 min
Views65K
Итак, допустим вы веб-разработчик. Допустим у вас есть домашний компьютер под управлением Линукса, работающий 24x7 и динамический внешний ip. Допустим вам нужно подключаться к нему по ssh или демонстрировать заказчику web проекты, которые по каким то причинам долго или и вовсе нельзя выкладывать на хостинг (именно из за необходимости показывать что-то третьим лицам VPN не выход). Допустим вас не устраивают DynDNS сервисы. Приступим.

Согласен, условия специфические — но чего в жизни не случается.

Схема приблизительно такая — домашний ПК стучится на ваш сайт (вы же веб-разработчик как-никак, должен же у вас быть сайт), тот фиксирует ip адрес, и выдаёт его вам.
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments30

Web API с помощью Django REST framework

Reading time4 min
Views157K
Веб-cервис (англ. web service) — идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (XML, JSON и т. д.). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения.

Одним из подходов создания веб сервиса является rest.
Rest (сокр. англ. Representational State Transfer, «передача состояния представления») — стиль построения архитектуры распределенного приложения. Данные в REST должны передаваться в виде небольшого количества стандартных форматов (например HTML, XML, JSON). Сетевой протокол (как и HTTP) должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запрос-ответ». Утверждается, что такой подход обеспечивает масштабируемость системы и позволяет ей эволюционировать с новыми требованиями.

Читать дальше →
Total votes 32: ↑25 and ↓7+18
Comments8

Собираем wi-fi устройство управления электроприборами с веб-сервером и JS-фронтэндом

Reading time12 min
Views254K
Добрый день, уважаемые хабровчане. В этой статье я несколько отойду от своего традиционного подхода к DIY – нашей основной целью станет быстрое и эффективное получение результата, а не изобретение велосипедов с целью самообучения, поэтому даже люди, впервые держащие паяльник, смогут все это повторить и получить готовое устройство за ~1000 рублей и один день.
Читать дальше →
Total votes 92: ↑90 and ↓2+88
Comments37

Приемы написания скриптов в Bash

Reading time7 min
Views173K
Администраторам Linux писать скрипты на Bash приходится регулярно. Ниже я привожу советы, как можно ускорить эту работу, а также повысить надежность скриптов.

Совет 1

Не пишите скриптов, которые выполняют действия ничего не спрашивая. Такие скрипты нужны довольно редко. А вот всевозможного «добра» для копирования, синхронизации, запуска чего-либо, хоть отбавляй. И если в любимом Midnight Commander Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно. Это как правила дорожного движения — «написано кровью».

Совет 2

Отталкиваясь от предыдущего, в начало каждого скрипта неплохо помещать что-то вроде:
read -n 1 -p "Ты уверен, что хочешь запустить это (y/[a]): " AMSURE 
[ "$AMSURE" = "y" ] || exit
echo "" 1>&2
Команда echo, кстати, здесь нужна потому, что после нажатия кнопки <y> у вас не будет перевода строки, следовательно, следующий любой вывод пойдет в эту же строку.

Совет 3

Это ключевой совет из всех. Для того, чтобы не писать каждый раз одно и то же — пользуйтесь библиотеками функций. Прочитав много статей по Bash, я вынужден констатировать, что этой теме уделяется мало внимания. Возможно в силу очевидности. Однако я считаю необходимым напомнить об этом. Итак.
Заведите свою библиотеку функций, например myfunc.sh и положите ее, например в /usr/bin. При написании скриптов она не только поможет сократить ваш труд, но и позволит одним махом доработать множество скриптов, если Вы улучшите какую-либо функцию.
Например, в свете совета 2 можно написать такую функцию:
Читать дальше →
Total votes 121: ↑83 and ↓38+45
Comments46

Прекратите скручивать (восклицательный знак)

Reading time6 min
Views1.7M
Ну действительно, прекратите. Есть куча прикольных штук для соединения самых разнообразных проводов, а все равно технология «откусить зубами изоляцию, скрутить, замотать изолентой» жива до сих пор.

Дальше много текста, фотографий, разборок. Ну все как обычно
Total votes 682: ↑667 and ↓15+652
Comments360

Допиливание MR3020, пересборка его ядра и конфигурирование инструментария разработчика

Reading time18 min
Views245K
Добрый день, уважаемые хабровчане. Так как в последнее время в DIY-проектах стал набирать популярность китайский роутер фирмы TP-Link TL-MR3020 (или его аппаратный аналог для китайского рынка TL-WR703N), я решил написать статью по вариантам его допиливания и конфигурирования для своих проектов, тем более что по работе я развлекался с ним последние несколько месяцев. В статье я постараюсь рассмотреть аспекты, которые не охватывают в большинстве статей для начинающих – а именно – практические примеры по пересборке его прошивки и конфигурировании для себя удобного инструментария разработчика.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments38

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

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

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Total votes 360: ↑352 and ↓8+344
Comments148

Поведение INSERT… ON DUPLICATE KEY UPDATE в крайней ситуации

Reading time5 min
Views145K
Несколько недель назад, я работал над проблемой клиента, который столкнулся с падением производительности БД и даже ее отказами, которые происходили приблизительно каждые 4 недели. Ничего особенного в окружении, в железе или запросах. В сущности, большей частью базы данных была одна таблица, в которой присутствовали, кроме прочего, INT AUTO_INCREMENT PRIMARY KEY и UNIQUE KEY.

Запросы, работающие с этой таблицей, почти все были типа INSERT ... ON DUPLICATE KEY UPDATE (далее — INSERT ODKU), где столбцы, перечисленные в INSERT, соответствовали столбцам с UNIQUE KEY. И выполнялись они с частотой, приблизительно 1500-2000 запросов в секунду, непрерывно 24 часа в сутки. Если вы хороши в математике, то наверное, уже догадались в чем дело.
Читать дальше →
Total votes 66: ↑65 and ↓1+64
Comments38

Шпаргалки для тех, кто делает первые шаги

Reading time1 min
Views31K


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

Шпаргалка по электронным компонентам (PDF, 168Kb)
Шпаргалка по контроллерам AVR (ч.1) (PDF, 61Kb)
Шпаргалка по контроллерам AVR (ч.2) (PDF, 61Kb)

PS: Там же, на сайте, имеется любопытный блог с описанием эффектных электронных поделок. Культура исполнения на высоте, приведены ссылки на open source прошивки.
Total votes 135: ↑130 and ↓5+125
Comments42

Breadboard — электронный конструктор для всех

Reading time7 min
Views141K
Привет, Хабр!
Не так давно здесь прогремела статья об Arduino, породившая холивар в комментариях. Многие сторонники Ардуины, по их словам, хотят просто чего-то собрать типа мигающих светодиодов с целью разнообразить свой досуг и поиграться. При этом они не хотят возиться с травлением плат и пайкой. Как одну из альтернатив товарищ dedsky упомянул конструктор «Знаток», но его возможности ограничены набором деталей, входящих в комплект, да и конструктор все же детский. Я же хочу предложить другую альтернативу — так называемый Breadboard, макетная плата для монтажа без использования пайки.
Осторожно, много фоток.
Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments42

Information

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