Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

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

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

Случилось мне сверстать красиво оформленную поисковую форму со всякими 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: Хотя можно было и просто картинку вставить…
Всего голосов 9: ↑5 и ↓4 +1
Просмотры407
Комментарии 25

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

Чулан
Иногда возникает необходимость осуществить агрегацию строк в 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'

Итак, начнем.
Читать дальше →
Всего голосов 15: ↑9 и ↓6 +3
Просмотры7.2K
Комментарии 9

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

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

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

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


Но тут же возникает (как ни странно :) следующий вопрос это, а если JS будет у посетителя отключен?
Читать дальше →
Всего голосов 114: ↑65 и ↓49 +16
Просмотры60.1K
Комментарии 141

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

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

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

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

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

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

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

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

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

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

Android x86 на Asus Eee PC 900

Разработка под Android

Зачем?


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

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

Разработка мобильных приложений
Tutorial

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

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

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


Читать дальше →
Всего голосов 72: ↑61 и ↓11 +50
Просмотры86.1K
Комментарии 93

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

Python
Перевод

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 января этого года.
Осторожно, трафик!
Всего голосов 92: ↑74 и ↓18 +56
Просмотры107.2K
Комментарии 68

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

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

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

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

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

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

По мотивам этого вопроса на Stack Overflow.
Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Просмотры16.5K
Комментарии 5

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

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

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

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

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

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

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

Читать дальше →
Всего голосов 109: ↑72 и ↓37 +35
Просмотры33.9K
Комментарии 70

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

CSSКодобредHTML
imageСколько я не мучил поисковик, а решения этого вопроса так и не нашлось. Конечно, всегда можно использовать JS и это нормально, но иногда заказчик душа просит изысков.
Читать дальше →
Всего голосов 47: ↑40 и ↓7 +33
Просмотры80.4K
Комментарии 90

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

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

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

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


Доктор, откуда у вас такие картинки?
Всего голосов 77: ↑74 и ↓3 +71
Просмотры19.3K
Комментарии 39

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

Информационная безопасностьМессенджерыPythonАлгоритмыРазработка систем связи

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

Читать дальше →
Всего голосов 56: ↑52 и ↓4 +48
Просмотры32.9K
Комментарии 35

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

Ненормальное программированиеPHP
Доброго времени суток, уважаемый Хабр!

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

Ой, что-то мы отвлеклись от основной темы. Не буду больше вас утомлять пространными речами, а перейду к делу.
Читать дальше →
Всего голосов 39: ↑33 и ↓6 +27
Просмотры17.3K
Комментарии 23

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

Ненормальное программированиеPHP

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


Предисловие


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


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

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры4.2K
Комментарии 4
1