Как стать автором
Обновить
36
0

Пользователь

Отправить сообщение

Как не стать спамером со своей уютной рассылочкой

Время на прочтение1 мин
Количество просмотров67K
image
Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
Его действия? «В спам!»

А по другую сторону баррикад находитесь Вы с вашей уютненькой подписочкой, полезной информацией и очень удобной системой отписки, о которой пользователь так никогда и не узнает.

И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.

Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.

Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
А сделать нужно не многое.
Читать дальше →
Всего голосов 238: ↑230 и ↓8+222
Комментарии60

Скрипты в Google spreadsheets

Время на прочтение4 мин
Количество просмотров39K
image

Не так давно стал доступен сервис скриптов в таблицах Google для персональных аккаунтов (gmail).
googledocs.blogspot.com/2010/03/apps-script-gallery-for-google.html
Краткое описание
www.google.com/google-d-s/scripts/scripts.html
Кроме этого, непосредственно из таблиц стал доступен сервис публикации скриптов в галерею.

Теперь мы можем создавать скрипты для Google Spreadsheets, загружать готовые, публиковать, обмениваться с другими пользователями.
Скрипты имеют богатый набор возможностей. Мы можем использовать всё управление, доступное в сервисах Google.
www.google.com/google-d-s/scripts/overview.html

Результатом работы скрипта, например, могут быть:
  • новая функция, отсутствующая в стандартном наборе;
  • значение, возвращаемое веб сервисом, в том числе, SOAP, WSDL и другие;
  • управление другими сервисами, например, сайтом, календарем, почтовой рассылкой;
  • автоматическое заполнение таблиц (непосредственное управление нашими spreadsheets);
  • создание пользовательских интерфейсов (custom spreadsheets UI).

Примеры созданных скриптов для применения в неогеографии
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии11

Запустился онлайн сервис печати 3d-моделей из нержавеющей стали

Время на прочтение1 мин
Количество просмотров13K
3d-печать из нержавеющей стали 3d-моделей
Компания Shapeways запустила новый онлайн сервис по 3d-печати из нержавеющей стали любых Ваших 3d-моделей. До этого события выбор материалов для 3d-печати был небольшим, в основном разнообразные полимеры. Но теперь, Shapeways стала первой компанией в мире, которая предлагает он-лайн сервис 3d-печати из нержавеющей стали.

Стоимость такой печати составляет 10$ за 1 см3 материала. Объем материала берется тот, который конкретно потратился при печати модели. К примеру, та фигурка, что изображена на картинке стоит меньше 20$ при ее размерах 4х4х2.5 см.
Читать дальше →
Всего голосов 107: ↑104 и ↓3+101
Комментарии110

Как я бросил курить, вопреки Алану Карру

Время на прочтение10 мин
Количество просмотров6K
image Много лет и много раз я пытался бросить курить. Я испытывал на себе различные фармацевтические и народные средства, но ничего хорошего из этого так и не вышло. Пару раз я бросал почти успешно. Первый раз на полгода, второй на пару месяцев. Все это продолжалось до тех пор, пока я не узнал про книгу Аллана Карра. Я пытался прочитать ее, но у меня не вышло. Я попытался прослушать аудиокнигу и прослушал ее, но книга поразила меня своей незамысловатостью. Безусловно в книге есть интересные моменты, для себя я взглянул на проблему несколько иначе, нежели видел ее до сих пор.
В итоге это не помогло. Но однажды, спустя примерно два месяца после прочтения книги, я просто не вышел в курилку.

Читать дальше →
Всего голосов 69: ↑49 и ↓20+29
Комментарии79

Кривые линии на Google Maps

Время на прочтение2 мин
Количество просмотров4.7K
Думается мне, что скоро Google даст нам возможность нарисовать не только ломаную на своих картах, но и кривую. А с необходимостью нарисовать кривую линию я столкнулся уже сейчас, в процессе работы с одним проектом. И пришлось вертеться.

Я обычно очень люблю почитать на Хабре посты вида «Смотрите, что я сделал» (особенно, когда это не стартап). Поэтому — смотрите, что я сделал — я реализовал грязный хак, который поможет нарисовать кривые.

Сначала — картинка (не кликабельно):

Пример графика на карте

Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии27

Гуглякартим по умному

Время на прочтение9 мин
Количество просмотров10K
В последнее время модно стало использовать гуглякарту.
Гугля карту суда, гугля карту туда.
И главное не забыть отобразить свои объектики на карте.
Но, почему-то, подавлявшее число сервисов используют неправильную реализацию процесса передачи маркеров с сервера на клиент.
Точнее они не правильно формируют запросы.
А если выразиться еще более точнее — они это делают
не-по-умному
Всего голосов 80: ↑63.5 и ↓16.5+47
Комментарии29

Что нам стОит карту пользователей построить?

Время на прочтение5 мин
Количество просмотров601
Несколько недель? назад прочитал на хабре про интеграцию с google maps. К сожалению не нашел ссылку, но смысл в статье шел о городском сайте на который пользователи могли самостоятельно добавлять объекты на карту. Идея выглядела довольно сексуально, но в комментах автор признался, что писАл этот функционал несколько месяцев((

Данный факт поверг меня в жёсткое уныние(
Анализ скриптов на симпатичных сайтах интегрированных с gmaps, навроде этого
dom показывал внушительные километры кода… И так бы я и продолжал сидеть в депрессии, пока случайно не забрел таки на сайт с хелпом от собственно гугла.

И как выяснилось — вся информация о сроках и объемах этой задачи как минимум саботаж и провокация! Итак, строим карту пользователей на основе сервиса Google maps
Примерно такую:


Читать дальше →
Всего голосов 57: ↑41 и ↓16+25
Комментарии34

База ГИБДД

Время на прочтение1 мин
Количество просмотров7.6K
Кто-то выложил в интернет актуальную (правда, неизвестно насколько) базу ГИБДД (поиск по номеру машины, ФИО владельца)
www.nomer.org/mosgibdd

У друга машина 3 года и он в этой базе есть :( Последствия сложно даже представить.
П.С. Там есть и другие базы, в том числе по телефону. Тоже работают.

Вопрос: как это можно «закрыть»? Информация же явно нелегально получена.
Всего голосов 51: ↑48 и ↓3+45
Комментарии144

Интегрируем google maps

Время на прочтение2 мин
Количество просмотров2.8K
Google maps — отличное средство для картографии и сейчас мы будем интегрировать его себе на сайт благодаря открытому API. Интегрировать будем не только фиксированное положение но и произвольное, а именно — создадим в базе данных таблицу «locations», впишем там поля title, x, y.

Теперь нам надо редактировать каждое местоположение. Создадим полотно, где будет отображаться карта.
<div id="map" style="width: 250px; height: 250px"> </div>

Дальше — прикрутим вызов библиотеки из google. Поскольку я использую smarty, то я передаю ключ разработчика в виде переменной.
<script src="http://maps.google.com/maps?file=api&v=2&key={$google_maps_hash}" type="text/javascript"></script>


Теперь сделаем функцию, которая будет заниматься всей гразной работой — создавать карту в нашем div элементе, позиционировать согласно заданным координатам, устанавливать bubble. В случае если мы редактируем эти координаты, то функция будет по обратной связи прописывать в скрытые input-поля некоей формы «registration_form» новые координаты перенесённого pin-указателя.
<script type="text/javascript">
function load_map(x,y,title) {

if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(x, y), 13);
map.enableScrollWheelZoom();

point = new GLatLng(x, y);
marker = new GMarker(point);

map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addOverlay(marker);
marker.openInfoWindowHtml(title);
/*
var mgr = new GMarkerManager(map);

GEvent.addListener(marker, "dragend", function() {
//var center = map.getCenter();
var strCenter=marker.getPoint();
marker.openInfoWindowHtml(document.forms['registration_form'].title.value);
document.forms['registration_form'].geo_x.value=strCenter.lat();//arrCenter[0];
document.forms['registration_form'].geo_y.value=strCenter.lng();//arrCenter[1];

});
*/
}
}
</script>
Всего голосов 19: ↑19 и ↓0+19
Комментарии30

Как быстро проверить Linux сервер на предмет взлома

Время на прочтение4 мин
Количество просмотров127K
Примерно два года назад я арендовал у одного немецкого хостера не очень мощный сервер на базе Centos 5.2. На нём живут несколько вебпроектов, приносящих некоторую прибыль, и поэтому, я стараюсь присматривать за ним по мере возможности.
На Centos есть стандартный анализатор логов Logwatch, который запускается ежедневно по крону, анализирует содержимое /var/log, делает сводный отчет и присылает его по электропочте. В один прекрасный день я обнаружил в этом отчете запись:

--------------------- yum Begin ------------------------ 
 
 Packages Installed:
    lzo2 - 2.02-3.el5.rf.i386
    dnstracer - 1.8-1.2.el5.rf.i386
    openvpn - 2.0.9-1.el5.rf.i386

---------------------- yum End -------------------------


В тот момент меня она очень смутила, так как в предыдущий день на сервер я не логинился и тем более ничего не устанавливал. Первое, что пришло в голову — сервер был скомпроментирован. Себя я считал уверенным пользователем Linux, однако я растерялся. Благо в тот момент в icq был мой бывший коллега, лучший системный администратор, которого я знаю, и просто очень хороший человек.
Он помог быстро проверить систему. В результате у меня сформировалось краткое HowTo о том, как быстро проверить свой сервер на предмет взлома. Уверен, что многим Храброчитателям оно будет полезно. Предполагается, что пользователь знаком с консолью Linux/Unix.

Читать дальше →
Всего голосов 212: ↑183 и ↓29+154
Комментарии105

Kwiki — управляй руками!

Время на прочтение5 мин
Количество просмотров1.1K
http://kwikithebird.com augmented reality game

Добрый день, Хабрасообщество

Эта публикация заинтересует тех, кто не равнодушен к инновациям в пользовательских интерфейсах, а также увлеченных Дополненной Реальностью (Augmented Reality).
Читать дальше →
Всего голосов 75: ↑65 и ↓10+55
Комментарии42

Улучшенные идиомы для плагинов

Время на прочтение6 мин
Количество просмотров2K
Этот пост был опубликован 12 ноября 2009 года, но я думаю он не потерял своей актуальности, потому что плагины к Rails (и не только) все так же актуальны.

Последние дни мы с Карлом работали над системой плагинов. В частности, мы прошлись по Rails Plugin Guide. Читая гайд, мы заметили много излишеств в представленных там идиомах.

Я не упрекаю автора гайда; представленные идиомы в точности повторяют те, которые использовались с самых ранних дней Rails. С другой стороны, глядя на них я вспоминал те дни, когда при виде такого кода мне казалось, что Ruby полон магических заклинаний и относительно простые вещи требуют проведения каких-то особых церемоний (вроде танца с бубном. — Прим. перев.).

Вот пример:
Copy Source | Copy HTML<br/>module Yaffle<br/>  def self.included(base)<br/>    base.send :extend, ClassMethods<br/>  end<br/> <br/>  module ClassMethods<br/>    # любой метод здесь будет применяться классом, например, Hickwall<br/>    def acts_as_something<br/>      send :include, InstanceMethods<br/>    end<br/>  end<br/> <br/>  module InstanceMethods<br/>    # любой метод тут будет применяться экземпляром, например, @hickwall<br/>  end<br/>end <br/>

Начнем с того, что send вообще не нужен. Метод acts_as_something будет вызываться в самом классе, что даст ему доступ к приватному методу include.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии3

Unlimited IE one-time CSS expressions

Время на прочтение3 мин
Количество просмотров1.4K
В поддержку дней CSS expressions на хабре

Думаю все, кто сталкивался с решением каких-нибудь проблем в IE<8 знает про CSS expressions и про «одноразовые» CSS expressions, которые применяются к элементу только один раз, тем самым не создавая постоянной нагрузки на процессор. Обычно это решается так:
.my-class {
    behavior: expression(someMagick(), runtimeStyle.behavior = 'none');
}
А что, если хочется использовать больше свойств?
Всего голосов 33: ↑31 и ↓2+29
Комментарии11

Web разработка под iPhone

Время на прочтение4 мин
Количество просмотров16K
Пока все Интернет сообщество со всех сторон продолжает обсуждать, как же можно приспособить iPad для работы, я бы хотел все же вернуться к iPhone. По профессии я программист и люблю новые технологии. И очень мне уж хотелось сделать приложение для своего телефона, но вот как-то душа к Objective C не лежит пока что, да и макбука с лицензией разработчика тоже пока нет. И мне стало интересно, могу ли используя знания html и js написать что-нибудь. Оказалось что да, и способов очень даже много. О них – под катом.
Читать дальше →
Всего голосов 52: ↑45 и ↓7+38
Комментарии35

Визуальный сахар для ActiveRecord

Время на прочтение4 мин
Количество просмотров1.2K
Каждый, кто разрабатывал приложение на RoR знает, что в консоли (./script/console) не слишком удобно просматривать ActiveRecord объекты, они имеют мягко говоря не читабельный вид

Например в моем последнем проекте есть модель Schema
Читать дальше →
Всего голосов 40: ↑32 и ↓8+24
Комментарии33

GITips & GITricks

Время на прочтение2 мин
Количество просмотров2.3K
Уже было несколько статей, где авторы рассказывали о том как скрасить консольные будни с git. В последней приведенной ссылке автор предлагает создавать алиасы, для работы c git, непосредственно в shell. Это не очень хороший способ, хотя бы потому, что, например алиас gc будет конфликтовать с одноименной командой пакета graphviz. git сам прекрасно умеет работать с собственным алиасами.

Ваш новый gitconfig
Всего голосов 47: ↑38 и ↓9+29
Комментарии15

Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся. Часть 2: архитектура

Время на прочтение13 мин
Количество просмотров7K
Вслед за первой частью, призванной в первую очередь показать, что «не так страшен чёрт, как его малюют»

Статья об архитектуре части проекта, которая занимается он-лайн платежами. Намеренно не хотелось бы сейчас подробно описывать API конкретного биллинга или процедуру регистрации в нём. Тонкости конкретных биллингов нужно обсуждать отдельно, иначе тему просто не раскрыть. Цель статьи: обсудить вариант архитектуры, позволяющий нанизывать новые виды биллингов и типы платежей, с наименьшей головной болью.
Читать дальше →
Всего голосов 72: ↑64 и ↓8+56
Комментарии33

Загрузка браузером нескольких файлов

Время на прочтение5 мин
Количество просмотров30K
Если нужно дать пользователю возможность загрузки нескольких файлов, традиционное решение на данный момент — использовать для этой цели Flash (реже — Java applet или ActiveX). В случае, если соответствующий плагин недоступен, пользователю, как правило, показывают стандартный HTML-элемент для загрузки файла.

Последнюю ситуацию можно улучшить, если использовать встроенную в браузеры возможность множественной загрузки файлов. Из всех браузеров сейчас данную возможность не поддерживает только Internet Explorer (впрочем, мы ещё не видели девятую версию, может там что-то изменится), остальные браузеры — Opera 9 и выше (а так же версии 3.5—6.05), Firefox 3.6+, Chrome 3.0.191.0+ и Safari 4.0.1+ такую возможность предоставляют.

Достаточно написать что-то вроде
Copy Source | Copy HTML
  1. <form enctype="multipart/form-data" method="post">
  2.    <input type="file" min="1" max="9999" name="file[]" multiple="true" />
  3.    <input type="submit" name="submit" />
  4. </form>
PHP оказался готов к такой конструкции (именно для него в параметре «name» стоят квадратные скобки), он просто разложит загружаемые файлы по элементам массива $_FILES, если только мы не используем «Оперу».

К сожалению, «Опера» (ещё с версии 3.5) отправляет, при использовании мультизагрузки, файлы в контейнере «multipart/mixed», который PHP не понимает.

Я попробовал исправить эту ситуацию.
Читать дальше →
Всего голосов 119: ↑107 и ↓12+95
Комментарии67

Способ вертикального выравнивания блока с помощью настоящего vertical-align

Время на прочтение4 мин
Количество просмотров70K
Сегодня, верстая один макет, я, кажется, изобрел очередной небезынтересный способ вертикального выравнивания блока относительно родительского. Он не основан на превращении блоков в ячейки таблицы и не использует css-свойство position.

Требования

— Должна быть известна начальная высота родительского блока;
— Дочерний блок может иметь произвольный размер как по высоте, так и по ширине.

Возможности

— Работает в IE6+, O9+, FF2+, webkit;
— Тру vertical-align выравнивание со всеми допустимыми значениями;
— Одинаковое поведение во всех браузерах (незначительные отклонение при некоторых условиях в ие6 будут оговорены ниже);
— При вырастании дочернего блока выше «папочки», родительский блок расширяется;
— Ни грамма JavaScript.
Читать дальше →
Всего голосов 98: ↑83 и ↓15+68
Комментарии59

Динамический CSS?

Время на прочтение4 мин
Количество просмотров19K
xCSS PHP ClassЯ давно ждал этого момента, нет честно, где-то в подкорке я очень-очень хотел такой штуки чтобы было удобно писать на CSS без переписывания похожих стилей по два раза, без выыскивания нужных разделов в собственном коде, в общем хотелось чтобы на CSS можно было работать легко и просто, что-то я затянул…И так встречайте xCSS — php-класс для работы с динамическим CSS.
Поехали
Всего голосов 109: ↑81 и ↓28+53
Комментарии52

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Зарегистрирован
Активность