Pull to refresh

Брутально-элегантная верстка

Lumber room
Никогда я так раньше не делал, однако, все по порядку.

Случилось мне сверстать красиво оформленную поисковую форму со всякими PNG-фенечками и кнопкой картинкой. Все бы ничего, пару дней все работало как часы, отправлялось, искало и т.д. А тут мне менеджер проекта и говорит: «Форма не работает». Как так? Глянул в ФФ — работает, в Опере — Ок, в ИЕ7 — работает, на шестерке завал. Блин. Как будто disabled на <input type=«image» src=«картинка»> выставлен, ан нет — ничего подобного.

Пробую onclick=«this.form.submit()» — Фиг вам.
Пробую onclick=«document.forms['form_name'].submit()» — Фиг.

Думаю, а что, если дело не в кнопке, ставлю обычный Сабмит — срабатывает только при попадании в два крайних правых пиксела — Блин.

И тут уже пришлось извращаться:
<form method="get" action="/search/" name="form_name">
<table cellpadding="0" cellspacing="0">
<tr>
<td><img src="/img/inner/spacer.gif" width="15" height="22"></td>
<td height="22"><input type="text" name="q" value="Поиск"></td>
<td width="27" height="22" onclick="document.forms['form_name'].submit()">
<input type="submit" value="" style="border-width: 0;
    background-color: transparent;
    background: url('/img/pretty_button.gif') 0px 3px no-repeat;
    width: 27px; height: 22px;">
</td>
</tr>
</table>
</form>


Что характерно, работает везде… :)

UPD: Хотя можно было и просто картинку вставить…
Total votes 9: ↑5 and ↓4 +1
Views 841
Comments 25

5 cпособов осуществить агрегацию строк в MS SQL

Lumber room
Иногда возникает необходимость осуществить агрегацию строк в SQL запросе, то есть, по такому набору данных:
GroupId Item
1 AAA
2 IS
5 OMG
2 WHAT
2 THE
1 This
получить примерно такой:
GroupId ItemList
1 AAA,This
2 IS,WHAT,THE
5 OMG
MySQL, например, для таких целей обладает встроенной функцией GROUP_CONCAT():
SELECT GroupId, GROUP_CONCAT(Item SEPARATOR ",") AS ItemList
FROM Items

В MS SQL Server'e такой функции нету, поэтому приходится извращаться. Перед тем, как приступить, сделаем скрипт для создания тестовой таблицы:
CREATE TABLE Items(GroupId INT, Item NVARCHAR(10))

INSERT INTO Items(GroupId, Item)
SELECT 1 AS GroupId, 'AAA' AS Item
  UNION ALL
SELECT 2, 'IS'
  UNION ALL
SELECT 5, 'OMG'
  UNION ALL
SELECT 2, 'WHAT'
  UNION ALL
SELECT 2, 'THE'
  UNION ALL
SELECT 1, 'This'

Итак, начнем.
Читать дальше →
Total votes 15: ↑9 and ↓6 +3
Views 12K
Comments 9

Как отправить форму по нажатию на ссылку?

Website development *
Этот вопрос входит, наверное, в ТОП10 вопросов на форумах :) Скорей всего это требование дизайнера или заказчика.

Итак, решение, на первый взгляд, простое:

<a href="#" onclick="document.getElementById('myform').submit(); return false;">Отправить</a>


Но тут же возникает (как ни странно :) следующий вопрос это, а если JS будет у посетителя отключен?
Читать дальше →
Total votes 114: ↑65 and ↓49 +16
Views 64K
Comments 141

Дрессируем box-shadow

CSS *
Простой пример box-shadow Разработчики W3C сделали box-shadow очень гибким свойством. Благодаря этому можно получать весьма интересные результаты, если использовать это свойство нетривиальным образом. В этой статье я напишу о некоторых эффектах, которые мне удалось получить при помощи «теневых технологий».

Пока я составлял примеры, я неожиданно обнаружил, что браузеры отображают их совсем неодинаково. В итоге, помимо простой демонстрации возможностей box-shadow, получился еще и маленький браузерный тест на поддержку CSS 3. Все примеры снабжены CSS-кодом и картинкой (общий объем всех PNG: 161 КБ). В статье я не стал прописывать свойства с вендорными префиксами -moz- и -webkit-, чтобы не ухудшать читабельность. В суммарной странице со всеми примерами эти префиксы есть (предупреждаю, что у Оперы есть баг с прорисовкой внешних box-shadow при прокрутке).
Читать дальше →
Total votes 132: ↑128 and ↓4 +124
Views 94K
Comments 56

Побеждаем ELMS Delivery Client

Software
Сначала объясню, о чем речь.
Что такое ELMS? ELMS (e-academy License Management System) — это веб-сайт для распространения ПО, который каждый администратор программы может настроить в соответствии с потребностями своего подразделения. Факультеты-подписчики MSDN Academic Alliance всего мира могут пользоваться ELMS бесплатно, так что ее использование не приведет к дополнительным затратам.

Зачем нужна ELMS? ELMS — это основанная на веб-технологиях система управления, упрощающая распространение ПО среди студентов в соответствии с политикой лицензирования программы MSDN AA.
Ссылка

Основная идея этой системы заключается о том, что пользователь скачивает специальное приложение, которое скачивает установщик лицензионного ПО и разархивирует его. Идея не так чтобы очень хорошая, но на первый взгляд терпимая. Но, как это часто бывает с продуктами Microsoft, всё пошло не так, как надо.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views 1.8K
Comments 4

Загрузка динамической библиотеки из памяти в Linux

Abnormal programming *
В одном моем кроссплатформенном проекте мне понадобилась возможность проверять цифровые подписи плагинов перед загрузкой. Ни один из вариантов с созданием файла не является безопасным, так как можно подменить файл между проверкой подписи и его загрузкой, так же нельзя проверить подпись после загрузки, так как уже выполнились статические конструкторы. Поэтому необходимо загружать плагин, не создавая файла.

Перехватить функции open, mmap и прочие невозможно, так как ld.so слинкован с библиотекой си статически, исполняемые файлы, загруженные же своим загрузчиком, «неполноценны» (даже с перехватом функций в libdl): они не регистрируются в списке загруженных библиотек и/или их символы не видны через dlsym. Следовательно, остается только перехват системных вызовов.
Here be dragons
Total votes 45: ↑41 and ↓4 +37
Views 5.7K
Comments 26

Android x86 на Asus Eee PC 900

Development for Android *

Зачем?


Принесла мне тётя с работы розовый нетбук, подаренный её дочкой, с проблемой «всё тормозит и не работает». А хочется, чтобы можно было и в интернете полазить, и фильмы посмотреть, и в простенькие игрушки поиграть. И так уж получилось, что нетбук был укомплектован уж очень медленным SSD. А так как Android у тёти есть на телефоне, то решено было ставить именно его — для интернета хватит.
Читать дальше →
Total votes 78: ↑73 and ↓5 +68
Views 93K
Comments 68

Карманный сервер MiniX, или обзор серверных технологий для Android

Development of mobile applications *
Tutorial

На этот раз из MiniX мы будем делать не Интернет-розетку, а самый настоящий веб-сервер. Правда, маленький, но с полноценным php, python, bash, MySQL.
Заглянуть под кат
Total votes 52: ↑47 and ↓5 +42
Views 50K
Comments 40

Радиопередатчик из Raspberry Pi и куска провода

DIY
Теперь каждый может сделать из своего Raspberry Pi неплохой FM передатчик. Для этого не нужно каких-то особых умений или деталей, всё, что вам понадобится — кусок провода длиной примерно в 20см.


Читать дальше →
Total votes 72: ↑61 and ↓11 +50
Views 162K
Comments 93

Как мы создавали кластер из Raspberry Pi

Python *
Translation

12-14 февраля прошла известная конференция WSO2Con 2013. И её ведущим был Эбен Аптон (Eben Upton) — основатель и попечитель фонда Raspberry Pi Foundation.

Как все однажды началось...


Raspberry Pi будоражит умы гиков с тех самых пор, как была первый раз анонсирована. Мы были взволнованы услышать о том, что Эбен будет представлять конференцию и ещё больше удивлены, когда Sanjiva (прим. пер.: CEO WSO2, главный организатор конференции) предложил нам разместить бэкенд официального приложения WSO2Con на кластере из Raspberry Pi. Предложил что? Да, он всегда полон безумных идей. Первое совещание прошло 23 декабря 2012, за день перед уходом команды на рождественские каникулы. В то время мы даже не были уверены, возможно ли вообще запустить enterprise middleware на Raspberry Pi. Но исследование неизведанного — это обычное дело для WSO2, и достижение недостижимого — то, что мы делаем здесь на регулярной основе. Таким образом, группа отважных гиков бросила вызов созданию такой системы. Проект официально сдвинулся с мёртвой точки 2 января этого года.
Осторожно, трафик!
Total votes 92: ↑74 and ↓18 +56
Views 109K
Comments 68

Использование словарей в tcl

Abnormal programming *
Tutorial
Приветствую, Хабра! %username, ты наверняка слышал про такой язык как tcl и его графический тулкит tk. Язык отличается особой гибкостью (на мой скромный взгляд). Пока нет много времени написать об «облачной» разработке, решил написать мини-статью/мини-урок про одну из возможностей замечательного языка tcl — словарях ( причем, их я не могу вспомнить по книге «Практическое программирование на Tcl/TK», быть может просто читал старую версию). Наиболее полное описание данного типа данных, %username, ты можешь найти по ссылкe.
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Views 5.3K
Comments 10

Занимательный C++: Счетчик времени компиляции

Abnormal programming *C++ *
Предлагается разработать безопасную альтернативу встроенного макроса __COUNTER__. Первое вхождение макроса заменяется на 0, второе на 1, и так далее. Значение __COUNTER__ подставляется на этапе препроцессирования, следовательно его можно использовать в контексте constant expression.

К сожалению, макрос __COUNTER__ опасно использовать в заголовочных файлах — при другом порядке включения заголовочных файлов подставленные значения счетчика поменяются. Это может привести к ситуации, когда например в foo.cpp значение константы AWESOME равно 42, в то время как в bar.cpp AWESOME≡33. Это нарушение принципа one definition rule, что есть страшный криминал во вселенной C++.

Нужна возможность использовать локальные счетчики вместо единого глобального (как минимум, для каждого заголовочного файла свой). При этом возможность использовать значение счетчика в constant expression должна сохраниться.

По мотивам этого вопроса на Stack Overflow.
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Views 18K
Comments 5

Блокировка ранобэ на сайте «Бака-Цуки»

Legislation in IT
[логотип]По адресу https://antizapret.info/?search=baka нетрудно убедиться в том, что сайт «Бака-Цуки» (логотип которого я привожу справа; это одно из крупнейших в мире хранилищ неофициальных переводов японских ранобэ) с 1 августа 2014 года в России был заблокирован по указанию Роскомнадзора. Официально блокировка касается четырёх URLов, на сáмом же деле многие крупные провайдеры («Ростелеком», например) блокируют сайт целиком.

Что такое ранобэ? Этим словом (как вы можете прочесть в Википедии) называются японские развлекательные истории для подростков и молодёжи — это небольшие книжки, текст в которых перемежается иллюстрациями, стиль которых напоминает мангу или аниме.

Вот и блокировка сайта «Бака-Цуки» связана не с тем, например, что сочинение перевода ранобэ без согласия авторов может восприниматься óрганами как «пиратство» — а только с тем, что рисование в стиле манги в некоторых случаях может восприниматься óрганами как «педофилия». (Оба слóва эти приходится поставить в кавычки: под хабракатом я попробую перечислить признаки того, что к сексу с детьми эти рисунки имеют настолько же отдалённое отношение, насколько перевод иллюстрированной ими книги далеко отстоит от нападения на морские суда.)

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

Два предыдущих оборота этого маховика мы обсудили на Хабрахабре в прошлом году: это были блокировки какого-то аниме (14 июня 2013 г., «Роскомнадзор признаёт хентай детским порно, призывает к подаче жалоб, обещает пополнение реестра запрещённых ресурсов в Интернете») и затем какой-то манги (24 сентября 2013 г., «Роскомнадзор запрещает двадцать девять японских комиксов "манга", приравнивает к сексу с детьми»). Что это было за аниме, что за манга? Да кто ж их знает! — и в том, и в другом случае, к сожалению, читатели «Хабрахабра» (среди которых ≈37% анимешников) не располагали списком названий конкретных заблокированных произведений и поэтому никак не могли самостоятельно оценить справедливость принятых Роскомнадзором решений; нам оставалось только вздрагивать от явно чрезмерных оценок, публикуемых на всю страну со слов того или иного эксперта («потребители такого рода контента — психопаты», «их можно назвать эстетами от извращенцев», «"манга" мы рассматриваем как вид творческой деятельности, давший начало развитию "хентая"», вот это всё в одних только «Известиях»).

С блокировкою «Бака-Цуки» положение дел куда лучше: сделалися известными точные адреса заблокированных материалов — следовательно, есть у нас и возможность делать самостоятельные выводы о них. Приступим же к этому занятию.

Читать дальше →
Total votes 109: ↑72 and ↓37 +35
Views 48K
Comments 70

Полная кастомизация select без использования JS

CSS *Delirium coding HTML *
imageСколько я не мучил поисковик, а решения этого вопроса так и не нашлось. Конечно, всегда можно использовать JS и это нормально, но иногда заказчик душа просит изысков.
Читать дальше →
Total votes 47: ↑40 and ↓7 +33
Views 83K
Comments 90

PHPUnit: Электронная таблица (spreadsheet) в качестве источника данных (data provider)

PHP *
Tutorial
Recovery mode
В документации PHPUnit есть небольшой раздел посвященный источникам данных (data provider), которые позволяют скормить тесту большой объем данных, а чуть ниже есть даже пример источника данных для CSV файла.
но что делать если хочется отдельную страницу для каждого теста?
Total votes 15: ↑12 and ↓3 +9
Views 8K
Comments 2

Пятничный JS: как вдохновиться Smalltalk'ом и попасть в ад

Abnormal programming *JavaScript *
Когда я читал книгу «Паттерны разработки игр», написанную замечательным человеком по имени Bob Nystrom (я не пишу его имя по-русски, поскольку не имею ни малейшего понятия, как это произносится), в одной из глав мне на глаза попалась небольшая ода языку Smalltalk как праотцу всех современных объектно-ориентированных языков, намного опередившему своё время. Поскольку я по жизни испытываю необоримую приязнь ко всяким винтажным языкам, естественно, я полез про него гуглить. И разумеется, вместо того, чтобы вынести из этого опыта что-то полезное, я научился плохому.


Доктор, откуда у вас такие картинки?
Total votes 77: ↑74 and ↓3 +71
Views 20K
Comments 39

Еще более секретные Telegramмы

Information Security *Instant Messaging *Python *Algorithms *Development of communication systems *

Все привыкли считать телеграм надежной и безопасной средой для передачи сообщений любого сорта. Однако, под капотом у него крутится совершенно обычная комбинация а- и симметричного шифрований, а это ведь совсем не интересно. Да и в конце концов, зачем вообще явно доверять свои сообщения третьей стороне?
КДПВ за авторством Antonio Prohías
TL;DR — изобретаем приватный скрытый канал через блокирования пользователями друг друга.

Читать дальше →
Total votes 56: ↑52 and ↓4 +48
Views 35K
Comments 35

Как выглядит zip-архив и что мы с этим можем сделать

Abnormal programming *PHP *
Доброго времени суток, уважаемый Хабр!

За последние пол года кривая дорожка моих пет-проектов завела меня в такие дебри, откуда до сих пор выбраться не представляется возможным. И начиналось-то все безобидно — сайт с картинками, но чувство перфекционизма, погоня за халявой, а также некоторые особенности моего склада ума превратили эту, как изначально планировалось, маленькую прогулку, в настоящее длинное путешествие. Ну и ладно, как говорил один довольно картавый революционер: «Учиться, учиться и еще раз учиться», а мне, волей-неволей, приходится этому напутствию следовать.

Ой, что-то мы отвлеклись от основной темы. Не буду больше вас утомлять пространными речами, а перейду к делу.
Читать дальше →
Total votes 39: ↑33 and ↓6 +27
Views 20K
Comments 23

Как выглядит zip-архив и что мы с этим можем сделать. Часть 2 — Data Descriptor и сжатие

Abnormal programming *PHP *

Продолжение статьи Как выглядит zip-архив и что мы с этим можем сделать.


Предисловие


Доброго времени суток.
И снова в эфире у нас нетрадиционное программирование на PHP.


В прошлой статье уважаемых читателей заинтересовала тема сжатия в ZIP и сохранение потоков в zip. Попробуем сегодня хоть немного раскрыть эту тему.

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 4.9K
Comments 4
1