Обновить

Пробуем себя в разработке интерпретатора

Здравствуйте. Сегодня я бы хотел рассказать вам, как написать простейший интерпретатор скриптов. Я не сомневаюсь, у многих из вас есть подобные, а то и не один, но ведь на хабре обитают и те, кто хотел бы написать, но по каким-либо причинам никак не может. Причины могут быть самые различные. Например, в моем случае это была банальная лень и небольшая нехватка времени. Но давайте подумаем, чем могут нам помочь скрипты? Ведь, как это уже было сказано 150 миллиардов миллионов раз, они медленнее скомпилированного кода. Но ведь есть круг задач, где нам скорость обработки данных не так важна. Да и тем более, мы же будем писать скрипты не для игровой логики (хотя, почему бы и нет), а для автоматизации повседневной рутинной работы. *Я уже слышу ярые крики линуксоидов* В данном случае все будет реализовано своими руками и наш скрипт язык будет иметь нужные вам функции. Да и не будем забывать о том, что это делается ради опыта)). Для начала необходимо поставить перед собой цель, что же мы хотим получить в итоге.
• Язык с простым синтаксисом
• Большое количество встроенных функций
• Систему плагинов
Давайте быстро пробежимся по этим пунктам. Язык с простым синтаксисом…хм…какие простые языки мы знаем? C/C++/C# — привычный – да, простой –нет (интерпретация полного C-like синтаксиса достаточно сложная задача, а время у нас, как мы помним, поджимает). Pascal/Delphi – знакомый – да, простой – да, но я не люблю паскаль)). Ээм…Basic – просто – еще какой простой, знакомый – почти каждому со школьной скамьи в различных вариациях, синтаксис – один из самых легких для интерпретации. Так что же мешает его взять в качестве нашего языка для интерпретации? Только ненависть программистских масс к Бейсикам, но мы же для себя и будем использовать тихо дома и никому не показывать))). Так, с языком решено, что там дальше по списку? Ах да, большое количество встроенных функций. Хм, ну тут без комментариев. Следующий и последний пункт- система плагинов. Как же мы хотим её реализовать? Давайте подумаем, что она должна делать и в чем будет суть нашего плагина. Он должен расширять возможности интерпретации, добавляя в нашу программу встроенные функции. Итак, немного пораскинув мозгами, мною(а возможно я изобрел велосипед, но честно))) была придумана такая схема:
• Интерпретатор подгружает каждую библиотеку dll из папки plugins
• Ищет в них функцию входа для регистрации новой функции
• Функция входа получает экземпляр на наш класс интерпретатора и в нем регистрирует новую функцию, чтобы последний не ругался, увидев её в коде, а выполнял то, что от него требуют.
Читать дальше →

Кофейня для web-персон

image

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

Netpresso.ru — кофейня для web-персон.

Flex 4 SDK. Локализация сообщений об ошибках.

При использовании Flex 4 SDK столкнулся со следующей проблемой: сообщения компилятора об ошибках выводятся в непонятном виде. Следует заметить, что данная проблема относится к использованию на русифицированных версиям Windows (у меня Win 7:7077).

Например:
image

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

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

Шаг первый.

1. Готовимся к самостоятельной компиляции Flex 4 SDK.
  • с помощью TortoiseSVN скачиваем последнюю ревизию Flex отсюда;
  • скачиваем и настраиваем Apache ANT;
  • устанавливаем Java SE Development Kit (замечание, которое сохранит время обладателям 64-битной версии Windows — скачивайте и используйте 32-битную версию);
  • скачиваем Cygwin отсюда, устанавливаем;

Дано лишь описание последовательности действий, читать более подробно о самостоятельной компиляции Flex 4 SDK следует тут.
Мы готовы к следующему шагу.

Шаг второй.
  • В папке, куда скачалась ревизия Flex 4 SDK, ищем папку modules\compiler\src\java\flex2\, в ней файлы compiler_ru.properties и compiler_en.properties;
  • compiler_ru.properties переименовываем в compiler_ru.properties.bak;
  • compiler_en.properties копируем в compiler_ru.properties

После этих нехитрых манипуляций запускаем Cygwin и компилируем SDK.
После компиляции сообщения об ошибках будут выводиться на английском языке.
Например:
image

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

Компиляция MPlayer с поддержкой многопоточного декодирования.

Данная статья является вольным переводом-компиляцией 2х статей Compiling mplayer with multi-core decoding support и Install the svn Mplayer under Intrepid Ibex.
Ничего страшного ниже написано не будет. Все — что ни на есть Ubuntu Way ).
Все что потребуется сделать — это собрать MPlayer из svn заменив исходники ffmpeg содержащиеся в нем на исходники из ffmpeg-mt.
Установка производилась на свежепоставленный intrepid.
Читать дальше →

Нюансы в Photoshop'e


Горячие клавиши в фотошопе, это первый шаг к прогрессу развития и увеличению скорости работы.
Как правило большинство из нас знает лишь малую часть функционала, что конечно же притормаживает работу.
Ориентируясь на себя, не буду сильно раскрашивать тему и допишу то, что обычно не находится в поисковике, а так хотелось бы :)



Общая часть.
Рука, это пробел, да, круто, но это знают все, поэтому добавляем к пробелу еще и зажатый Ctrl или Alt.
Рука будет переведена в лупу и будет увеличивать или уменьшать. Я редко этим пользуюсь. Чаще просто горячей Z.
Об обрезке. Crop toop имеет свойство не только обрезать кадр, но еще и увеличивать размер документа.
Сначала просто тянем как нам угодно это. Если по пытаетесь сделать его больше рабочего пространства документа, это не прокатит. Отпустили ЛКМ, а затем снова тянем. Уже тянуть можно за границы дока. Подтверждаем изменение обрезки и все, счастье нам :)

Работа в окнах. Если работаем в окнах, то переход между ними Ctrl+Tab (по порядку вперед). Чтобы идти также назад Ctrl+Shift+Tab.
Если выбрать Заливку и зажать Shift то можно покрасить серую область вокруг холста (по умолчанию там стоит цвет #с0с0с0).

Инструменты рисования.
При нажатии Caps Lock, курсор меняет свой вид, установленный по умолчанию, на перекрестье и обратно, правда, не у всех инструментов.

Прямая линяя от одной точки к другой. Ну вроде должны знать, но распишу. Чтобы провести линию между выдуманными точками A и B, сначала тыкаем кистью по точке А, затем зажав Shift тыкаем по точке В. Уаля, прямая готова. Я иногда и кисточкой вырезаю объекты Если кому нужно, расскажу как :)

Изменить размер кисточки можно клавой [ и ], тоже стандарт. Казалось бы, чего еще. Ага, а про мягкость забыли. Я вот например долгое время не знал как мягкость редактировать.
Так вот эти же клавиши с зажатым Shift'ом уменьшают и увеличиваю мягкость на +25%. т.е на клавишах это по стандарту можно сделать мягкость размерами в 0«—»25«—»50«—»75«—»100 %
Этого достигнуть можно еще и с помощью мыши, но более тонкой настройкой. Но для настройки на глаз нужна практика:
Если держать Alt+ПКМ, то, двигая мышь вправо—влево, можно менять размер кисти, а если держать еще Shift, то будет изменяться Hardness (она же, мягкость краев кисти)

Сменить инструмент одной категории можно нажатием ГК+Shift (горячей клавиши).
Например сейчас держу кисть, а хочу взять карандаш. Значит жму Shift+B

Если во время работы понадобился другой инструмент на не продолжительное время, то нажимаем на нужную ГК и держа ее делаем все что нужно. Как только отпустим ее, инструмент вернется на прежнее место. Например: Была кисть, использовал ластик, ластик отпустил, кисть вернулась.

Пентул разработчики тоже не обошли. Ctrl и Altl добавляют и убирают у кривой Безье точки… и это не все! Если держать нажатыми одну из этих клавиш и „напрячь“ точку (потянуть чтобы не перенести точку, а сделать линию у точки кривой), то получите все нужные инструменты пентула.
Alt делает из pen tool convert point , а Ctrl соответственно .

Alt действует заменой на противоположный инструмент для следующих Tool'в:
При нажатии Alt, Blur меняется на Shapen, а Dodge на Burn и на оборот. Сокращение затрат времени на выбор инструментов поразителен.

Работа с выделением.
Ctrl+D – снимает выделение.
Ctrl+Shift+D – возвращает последнее выделение.
Ctrl+Shift+C — позволяет скопировать выделенный участок видимого изображения, не склеивая слои.
Ctrl+H — скрывает «муравьиный путь» или рамку трансформации, не отменяя ее (главное потом не забыть включить повторным нажатием), а также скрывает направляющие.
Если на волшебной палочке убрать галочку Contiguous, то она будет выделять все пиксели подходящего цвета в слое. Например, удобно применять при очистке текста от фона (выделяются так же участки внутри букв).

Чтобы выделить слой, нужно нажать Ctrl+A (выделить все), затем V, и стрелками подвигать на 1pix туда обратно один раз. Этого хватит чтобы выделить слой и оставить его на месте при этом.
Я раньше использовал ctrl+тык по слою. Эта систем не совершенна. И выделение идет не 100%. Так что, переучиваемся.

Чтобы сделать несколько выделений и работать как с одним, держим Shift, если вычитать друг из друга, то Alt — снова базовый навык. А если я хочу сделать выделение окружности в переделах выделения квадрата? Вот этот момент очень интересен.
Жмем Shift+Alt и вместо привычных плюсов и минусов появляется крестик. За дело!

Работа со слоями и каналами.
Alt+[ или Alt+] – перейти на верхний или нижний слой. (Бывает и такое, да, пользуюсь)
Сtrl+[ или Ctrl+] – перемещать текущий слой вверх или вниз.

Ctrl+E — объединить выбранные слои. Если выбран только один слой, то он сливается с нижним. Если выделена группа, то склеиваются все слои в группе.
Ctrl+Shift+E — объединить видимые слои (Merge Visible).
Ctrl+Alt+E – на новом слое появится изображение, содержащее объединенное изображение выбранных слоев.
Ctrl+Alt+Shift+E — на новом слое появится изображение, содержащее объединенное изображение всех видимых слоев.

Чтобы скопировать эффекты слоя с одного на другой, нужно зажать Alt и просто перетянуть эффекты за слово Effects на нужный слой. Если не держать Alt, то эффекты переместятся на другой слой, а не скопируются.

Ctrl+1, Ctrl+2, Ctrl+3 — переключение картинки по каналам (красный—зеленый—синий, соответственно).
Ctrl+4… Ctrl+9 — переключение альфаканалов (если они есть на изображении).
Ctrl+~ — показать все каналы.

Прозрачность задавать можно просто цифрами от 1 до 10. Каждая единица, равна десятку. Например: 2= Opacity 20%.
Если быстро набрать два числа, то процент прозрачности будет равен этому числу. Например: 35= Opacity 35%

Спасибо за внимание :)
p.s: вроде тема актуальна и не является заезженной.

Кэширование объектов на уровне DAL/ORM

Хотелось бы высказать некоторые свои мысли по поводу кэширования объектов, материализованных уровнем доступа к данным (DAL) из реляционной базы данных. Исходя из моего скромного опыта работы над кэшированием объектов, могу сказать, что кэш хоть и является хорошим помощником, но его использование порождает многие вопросы. Я попробую обозначить их и попытаться решить.

Пожалуй, самая важная функция кэша — это поддержка идентичности объектов, отображающих одну и ту же запись таблицы БД. Кэш гарантирует, что ни одна запись не будет загружена дважды, следовательно внутри приложения не возникнет ненужных дублирований данных. Возникновение клонов неизбежно приводит к их рассинхронизации и неправильному состоянию объектного отображения. Одновременно кэш защищает от рекурсий чтения данных, когда считываются ссылающиеся друг на друга объекты.

Еще одно преимущество кэша угадывается из его названия — это повышение скорости доступа к данным. Если объект с требуемым ID уже имеется в кэше, то будет считан именно из кэша без запроса к БД. Правда, это преимущество проявляется только при запросе по первичному ключу. Загрузку списков объектов (например, всех сотрудников отдела) нельзя выполнить, используя одни лишь кэш (если, конечно, нет абсолютной уверенности, что все записи таблицы сотрудников кэшированы).

Безусловно, кэш необходим. Но кроме ощутимой пользы, он заставляет решить несколько важных вопросов и порождает проблемы целостности данных и освобождения ресурсов.

Масштаб кэша


Под масштабом я подразумеваю степень разделяемости объектов кэша. Можно выделить 3 степени:
1. глобальный разделяемый кэш для всех пользователей
2. локальный кэш для каждого пользователя
3. сеансовый кэш для каждого пользователя на каждый сеанс работы

Глобальный кэш отлично решает проблему идентичности объектов. Его использование означает, что все пользователи будут работать с одними и теми же объектами. Таким образом, глобальный кэш превращается в настоящую объектную базу данных. Это налагает дополнительные требования на DAL, который теперь должен обеспечивать транзакционную защиту такой БД. Поэтому рекомендуется использовать глобальный кэш для редко изменяемых справочников и данных «только на чтение».

Полная противоположность глобального кэша — сеансовый кэш. В нем объекты кэшируются только в пределах одной бизнес-транзакции. По завершению транзакции кэш сбрасывается. С одной стороны это резонно — кэш не будет занимать слишком много памяти. Данные в таком кэше будут часто обновляться из БД, а значит будут актуальными. Недостатком будут частые, по сравнению с глобальным кэшем, запросы к БД. Еще один недостаток можно обнаружить, если изучить то, как пользователи работают с объектами. Иными словами, бизнес-логику. В приложении могут обнаружиться такие действия, которые срабатывают, когда несколько пользователей что-то сделают с объектом. Например, ситуация, когда документ меняет свой статус в результате подписания его двумя руководителями. Если руководители подпишут документ параллельно и документ представляет собой два разных объекта (на каждого руководителя), то смена статуса не произойдет. Документ окажется в БД подписанным только тем руководителем, который сохранил его последним. Первому же придется повторить свои действия.

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

Видимо, проектируя DAL, вид кэширования следует выбирать исходя из семантики данных. Справочники можно кэшировать глобально, а активные данные (которые занимают большую часть БД) — локально.

Стратегии отката


Откат измененных объектов происходит, если после выполнения некоторых действий над объектами пользователь решил их отметить или при записи изменений возникла ошибка БД. В случае с сессионным кэшем откат реализуется «в лоб» простым сбросом кэша. Данные в актуальном состоянии буду вновь загружены из БД, когда потребуются. В случае с глобальным кэшем все не так просто. Просто так удалить объекты нельзя, это приведет к нарушению ссылочной целостности кэша. Можно попытаться загрузить измененные объекты из БД заново. Однако, если ошибка произошла из-за временной недоступности БД, то обновление не произойдет. Возможно пометить объект как неактуальный, и он загрузится из БД не сейчас, а когда в его данных возникнет необходимость. Задачу ведения журнала созданных/измененных/удаленных объектов отлично решает паттерн UnitOfWork.

Если объект содержит список других объектов и этот список был изменен, то необходимо или вновь загрузить его, или присовить ему null (если для списка используется ленивая загрузка). Осталось только определить, как UnitOfWork будет помечать измененные списки.

Стратегии загрузки


С целью оптимизации времени загрузки объектов из БД можно использовать различные стратегии. Например, если запись содержит бинарные данные, то загружать их следует по запросу (лениво), а в поле объекта записывать null. При сохранении, однако, не нужно забывать, что объект загружен не полностью и сохранять в БД поле со значением null не следует.

Чтобы снизить число запросов к БД можно использовать «форсированную загрузку». Смысл ее в том, чтобы загружать в кэш таблицу целиком, даже если требуется всего одна запись. Это поможет, если таблица небольшая, размещается в сессионном кэше и данные из нее требуются часто.

Для списков, принадлежащих объекту (таких как список сотрудников отдела), может подойти ленивая загрузка. Это значит, что список загрузится их БД только при первом обращении к нему. Затем его можно хранить внутри объекта. Однако это приводит к появлению у объектов собственных небольших кэшей, за которыми нужно следить.

Если объект А ссылается на объект B, то необходимо решить, будет ли при загрузке объекта A автоматически загружен объект B. Рассмотрим случай, когда загружается n объектов типа А. Если объект В принадлежит небольшому справочнику в глобальном кэше, то большая вероятность наличия его в кэше. Следовательно ожидается, что выполнится только 1 запрос к БД за списком объектов типа А. Если объекты типа В хранятся в сессионном кэше, то следует ожидать 1 запрос за списком А + n запросов за объектами типа В по первичному ключу. Чтобы избежать (1+n) запросов, можно с помощью оператора JOIN присоединить записи В к записям А, а на уровне DAL разбирать результат запроса. Еще одним решением может быть отложенная загрузка объектов типа В. В этом случае объект типа А ссылается на пустой объект типа В, в котором заполнено только ключевое поле. Данные в В будут загружены в момент первого к ним обращения в get свойств.

Стратегии освобождения


Все считанные из БД объекты автоматически попадают в кэш. Следовательно, его объем постоянно растет и может наступить момент, когда все записи БД окажутся в кэше. Чтобы этого не случилось, необходимо реализовать стратегию очистки. При использовании сессионного кэша эта проблема решается автоматически — необходимо лишь периодически сбрасывать кэш. В случае глобального кэша его сброс нежелателен, хоть и решает проблему. Поэтому предлагается удалять объекты, к которым за заданный промежуток времени не было обращений.

Однако простое удаление объектов приводит к проблемам. На удаленный объект могут ссылаться другие. Если запись, которую представлял удаленный объект, будет вновь запрошена из БД, то объект снова материализуется в кэше. В результате появятся два клона. Часть объектов будет ссылаться на одного клона, часть — на другого. К решению этой проблемы стоит подойти системно, рассмотрев все возможные ситуации, т.к. появление клонов может вызвать непредсказуемое поведение приложения. Если проблему сравнения объектов по ссылкам можно решить переопределив операцию сравнения, то проблему рассинхронизации полей этих объектов решить невозможно.

Для корректного освобождения кэша можно предложить удаление вместе с объектом, у которого истек срок жизни, всех объектов, которые на него ссылаются. Этот процесс может выполняться в фоне. Искомую ссылку может содержать как сам объект, так и список внутри объекта. Список может быть «ленивым», а значит перед тем, как искать в нем ссылку, следует проверить, загружен ли он из БД вообще.

Еще одна проблема может возникнуть, если удаленный из кэша объект лежит в свойстве Tag какого-нибудь юзер-контрола. Такой объект может содержать ссылки на удаленные объекты и сам по себе уже должен быть недоступен пользователю. Его использование совместно с объектами, только что взятыми из кэша, может привести к неоднозначным последствиям.

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

SQLite как менеджер личных финансов

Я использовал Excel для учёта личных финансов более 10 лет. И почти всё это время намеревался перейти на что-нибудь SQL-подобное. Тем временем Richard Hipp кропел над своим SQLite. И вот мы встретились :)

Осталось малое:

1. Поставить в Firefox аддон «SQLite Manager»: addons.mozilla.org/ru/firefox/addon/5817
2. Создать новую базу данных
3. Создать таблицу для транзакций:

CREATE TABLE entries (
debit varchar2(50) not null,
credit varchar2(50) not null,
amount numeric(10, 2) check (amount > 0) not null,
purpose varchar(200) not null default (''),
created date not null default current_timestamp
);


В эту таблицу будем аккуратно записывать все свои денежные действия в виде «Куда», «Откуда», «Сколько», «Зачем», «Когда».

Пример 1: Я получил зарплату, ура!
insert into entries (debit, credit, amount)
values ('Деньги.Кошелёк', 'Доходы.Зарплата', 100.50);


Пример 2: Внесу немнго денег на платежную карту.
insert into entries (debit, credit, amount)
values ('Деньги.Карточка', 'Деньги.Кошелёк', 50);


Пример 3: Я расплатился картой за покупку.
insert into entries (debit, credit, amount,purpose)
values ('Расходы.Быт', 'Деньги.Карточка', 20, 'На шампуньку');


Прелесть SQL в данном случае состоит в том, что с введенной информацией можно творить что угодно, строить любые запросы и получать любые разрезы. Об этом я напишу позже и подробнее, если будет инвайт ;)

Например: что за бухгалтерия без счетов! Создаём представление:
CREATE VIEW accounts AS
select account, balance
from (
select debit account, amount balance from entries
union all
select credit account, -1 * amount balance from entries
)
group by account
having balance <> 0;


Посмотрим, что получилось:
select account || ': ' || balance from accounts;

Деньги.Карточка: 30
Деньги.Кошелёк: 50.5
Доходы.Зарплата: -100.5
Расходы.Быт: 20


Я вижу сколько у меня денег, где я их взял и куда тратил. Учёт личных финансов, построенный на одной таблице. Осталось только нарисовать интерфейс :)

to be continued…

Про общение с пользователями на примере компании Cultured Code



Интересная история происходит с программой Things (GTD-менеджер для мака и айфона): ее создатели в процессе создания бета-версии активно вели блог на сайте и писали в твиттер, выпускали версию за версией (публично) и тем самым прославились еще до официального релиза первой версии. Их программа действительно отличная, красиво сделана и ею приятно пользоваться.
Но ребятам приходилось так много общаться с пользователями (вместо того, чтобы программировать), что их маленький стартап в конце концов нанял специального человека для общения.
Только что-то никто не видел этого человека.



Первая версия программы стоила (и стоит) дорого (50$, совсем не мало для, как бы, утилиты), ребята явно собрали кучу бабла (за счет массовой продажи со скидкой за неделю до релиза), и, вдохновленные, углубились в продолжение разработки. Забыв про ведение блога, твиттер и пользователей, которые подсели на общение с разработчиками и половину удовольствия от Things получали именно из-за того, что они видели, как делают программу.



Сейчас большинство записей на форуме программы, который теперь в интерфейсе сайта запрятали как можно дальше, состоит из криков «Почему они с нами не общаются?» и «Они нас не уважают!». Попадается смешное — «Слышали ли разработчики о системе GTD? Она специально предназначена для того, чтобы раз в неделю тебе вылезала напоминалка о том, что неплохо бы запостить в блог запись о том, как идут дела».
Какое-то время на форуме тусовались модераторы, которые занудно повторяли — «отстаньте от программистов, они работают», но и те в конце концов пропали.
Сами программисты только в последнюю неделю активизировались в твиттере с бодрым и невинным «Ой, мы тут такую фичу заделали, не терпится вам показать и посмотреть, как вы отреагируете!», как будто и не знают об армии пользователей, которая тусуется на форуме и ждет, например, чтобы перед ними извинились.
Но непонятно, есть ли за что извиняться?

Интересный способ проверки подлинности бумажных документов

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

Для примера — есть у вас небольшое свое дело, которое конечно требует своего документооборота; внедряя такую технологию, можно легко определить, сверяясь с оригиналом — во-первых, вашей ли организацией выдан талон, чек, накладная и любой другой бумажный документ, во-вторых, не проставлено ли на нем от себя каких-либо дополнительных моментов после заверения. Естественно это не всегда подходит для внешних дел, а вот для внутреннего контроля над персоналом — вполне.
Освоить подобное на удивление просто, это не требует денежных вложений на дорогостоящую аппаратуру и обучение специалиста — необходимы всего лишь компьютер хороший сканер и специальная программка о которой написано ниже.
В будущем по уверениям создателей такая технология перспективна как защита от подделки гражданских паспортов, банкнот и других документов.

Открыли это свойство ученные из Принстона (штат Нью-Джерси), которые в дальнейшем создали специальную программу для снятия узора с листа бумаги и последующей проверки на фальшивку документа прошедшего такую сверку. Англоязычная ссылка на их ресурс: citp.princeton.edu/paper

Как избавится от бага desktop.ini в Windiws 7(Bild 7057)

После установки Beta-версии Windows 7 многие сталкиваются с раздражающим багом, когда при каждом старте системы вылазит окошко блокнота с открытым файлом desktop.ini. Я расскажу, как от него избавится.
image
Читать дальше →

Clonezilla SE — что это за «продукт живности» и с чем его «употребляют»

Clonezilla Sever Edition


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


До недавнего времени пользовался специальной программой, написанной под заказ специально для инженеров данной сферы. Но была маленькая проблема – данная программа копирует весь диск побитно, в результате чего процесс занимал уйму времени и прилично места (используется классический метод dd)


Встал вопрос перехода на другую программу. Тщательно исследуя интернет, взгляд лег на Open Sourse проект – Clonezilla.


И так, что такое Сlonezilla?

Clonezilla – это Open Source пакет, предназначенный для копирования и восстановления как всего диска, так и отдельно разделы.
Преимущества данного проекта:
  • поддержка почти всех файловых систем, причем проект развивается и постоянно добавляет возможность работы с новыми файловыми системами.
  • возможность использовать разные виды компрессии образов.
  • массовое клонирование (мультикастинг) нескольких машин одновременно, если они поддерживают PXE и Wake-On-Lan. Данная функция поддерживается в Clonezilla Server Edition.

Для ощущения всех преимуществ Clonezilla нужно хотя бы раз ее попробовать в действии (за рекламу мне не платили, я просто рассказываю свои впечатления).

Clonezilla существует 2х видов:
1) Clonezilla Live
2) Clonezilla Server Edition.

Я использовал Clonezilla Server Edition, так как одним из критериев к программе является возможность сохранят и восстанавливать диски через LAN, что является очень важным при отсутствии в системе каких-либо устройств ввода/вывода.

Дальше речь пойдет об установке Clonezilla Server Edition в OpenSUSE (VMware Machine) и всеми вытекающими проблемами и их решениями (на уровне моих познаний – а я являюсь обычным пользователем).

Установка


  1. Качаем пакет DRBL, Clonezilla и все остальные пакеты, которые нужны будут для дальнейшей установки и корректной работоспособности системы: http://ftp.twaren.net/local-distfiles/drbl-core/ или http://free.nchc.org.tw/drbl-core/.
    !!! Настоятельно рекомендую скачать все пакеты самостоятельно, хотя при установке Clonezilla и пытается скачать их, используя репозитарий. Лично у меня с этим были большие проблемы (данный репозитарий часто бывает недоступным + лучше сразу сетевой карте присвоить статический адрес, а так как у меня 1 сетевая карта то и тут мне пришлось извращаться) !!!
  2. Также нам понадобятся curl, lftp, glibc и glibc-devel (ну, и другие компоненты, которых вам будет не хватать).
  3. Качаем DRBL ключ: http://drbl.nchc.org.tw/GPG-KEY-DRBL или http://drbl.sourceforge.net/GPG-KEY-DRBL .
  4. Начнем разбирать всю эту кучу. Не забудьте войты в систему с правами системного администратора (root).
  5. Импортируем ключ командой rpm --import GPG-KEY-DRBL.
  6. Устанавливаем все компоненты rpm -Uvh full_component_name.rpm или через графический интерфейс самой openSUSE.
    !!! При установке желательно придерживаться такого порядка – сначала DRBL, потом все прилагающие пакеты и в самом конце Clonezilla. Это сократит вам время установки. !!!
    Так как я уже упоминал, что работаю с VMware, то сделаю небольшое отступление для объяснения настроек виртуальной машины:
    • Для DRBL желательно (во избежание проблем с корректной работой приложения), чтобы было 2 сетевые карты, но я использую ноут с 1 сетевой картой.
    • Сетевая карта должна обязательно иметь статический адрес для DRBL среды (а как вы там будете настраивать, это уже дело каждого). Я использовал YaST.
    • Предупреждаю сразу, когда выполняете команду drblpush –i, у вас спросят, какой порт карты вы используете для доступа в интернет. Так как я интернетом не пользуюсь на этой машине, то мне пришлось в настройках сетевой карты добавить Alias (бутафория), чтобы можно было назначить данный Alias, как порт с выходом в интернет.
      !!! Постарайтесь сделать так, чтобы у вас 1 порт не использовался DRBL средой и какой-либо другой средой. !!!
    • В виртуальной машине выставляем Bridge mode.
  7. Приступаем к настройкам DRBL среды.Все скрипты хранятся в /opt/drbl/sbin (я, конечно, не отвергаю другие варианты расположения, но в моем случае так).
  8. Выполняем /opt/drbl/sbin/drblsrv-offline –r для проверки необходимых пакетов (если каких-либо не хватает – устанавливаем самостоятельно).
  9. Настройка drbl сервера. /opt/drbl/sbin/drblsrv –i
  10. Принимаем все указания по умолчанию, ничего не изменяем (это не приказ, можете делать, что угодно).
  11. Когда дело дошло к поиску пакетов в репозитории, я просто нажимал Enter, пропуская все errors. Это не приведет к дальнейшим проблемам (конечно, если были установлены все необходимые пакеты)
  12. Ок. Успешно завершили 1 часть.
  13. Запускаем /opt/drbl/sbin/drblpush –i .
  14. Отвечаем на все вопросы. (имя DNS, NIS/YP, hostname prefix)
  15. Дальше, как я уже писал выше, нужно указать какой порт использовать для Интернет доступа. Я использовал название порта, который создал как бутафорию.
  16. Снова оставляем все по умолчанию.
  17. Указываем с какого адреса начать раздавать IP адреса и количество машин, с которыми можно будет в будущем работать одновременно.
  18. Принимаем все. Когда дойдете до режимов DRBL сервера и Clonezilla, почитайте и выберите для себя подходящий.
  19. При выборе пути, куда будут сохраняться образы, я оставил директорию по умолчанию.
  20. Можно не использовать swap раздел, это как говориться up to you.
  21. Для клонирования мне хватает текстового режима загрузки клиентов
  22. Дальше я не заморачивался и оставил все по умолчанию.
  23. Установка завершена.

!!!Если у вас в системе был установлен DHCP сервер, то нужно что-то придумать с ним, ибо он начинает конфликтовать с DHCP сервером, который используется в DRBL среде. !!!
!!! Если во время настройки у вас появится сообщение
«Error! NAMESERVER is unset! Please set it in config file «drblpush.conf» or /etc/resolv.conf»
Делайте, как там написано set it in config file «drblpush.conf» or /etc/resolv.conf.
В файле /etc/resolv.conf указываем
domain (your domain)
nameserver (ip address)
Перед этим можно удалить строку search (domain name)

Преступайте к использованию Clonezilla.


  • Для управления службами DRLB сервера, выполняем команду /opt/drbl/sbin/drbl-all-service (параметр start, stop, restart, etc…)
  • Для запуска используем команду /opt/drbl/sbin/dcs.

Работаем, экспериментируем.



Лично мне Сlonezilla очень подходит по работе:
— если есть какие-то проблемы – создаются хорошие logs.
— скорость работы приличная.

Минусом данной программы, в моем случае, считаю мониторинг всего процесса. Так как я уже писал, что мои рабочие системы не имеют устройств ввода/вывода.
Но и тут я нашел несколько выходов с данного положения. Если будет интересно, опишу в следующем топике.


На данном этапе закончу. Так как в рабочий режим Clonezilla уже запущена.

Снятие лимита на 10 half-open соединений

Данная статья посвящена поднятию лимита на 10 half-open соединений до нужной величины.

Данный лимит был установлен корпорацией Microsoft с благими намереньями ограничить распространение червей через интернет.

Пользователям peer-to-peer сетей (Bit-torrent, Kademlia и др.) и тем, у кого появляется ошибка 4226, рекомендуется его поднять.

(Посмотреть, появляется ли данная ошибка, можно в {Панель управления -> Администрирование -> Просмотр событий->система ->tcp ip})

Существует несколько способов поднять данный лимит.

* Можно воспользоваться соответствующим патчем.


* Можно воспользоваться программой xp-antispy.

Рекомендуется воспользоваться ей, так как можно немного оптимизировать систему.

1 Необходимо загрузить портативную программу-твикер.

2 Выбрать в меню {Сервис -> Лимит соединений}.

3 Нажать «да».

4 Сделать резервную копию.

5 Выставить нужное количество в поле со списком.(100-оптимальная величина.)

6 Поднять лимит нажатием на кнопку.

7 Windows предложит(в некоторых сборках не предложит :) вставить диск для замены файла оригинальным.

8 Отказаться.

9 Перезагрузиться.

ЛИМИТ ПОДНЯТ!

Верстка почтовых рассылок

Здравствуйте, уважаемые Хабровчане!

(ох и поднадоело вам уже наверное это обращение)

Статья была написана под Новый Год, когда по работе потребовалось сверстать несколько почтовых рассылок (не спам). Здесь приведены некоторые советы по верстке, которые, возможно, помогут кому-то, сэкономить время и нервы. Вот примеры макетов:




Как видите, форма шаблонов несколько отличается от банального набора из абзацев текста и изображений.



Неразбериха в стандартах в среде почтовых клиентов и сервисов ужасная (по сравнению с теми же браузерами). Клиенты/сервисы очень своеобразно и по-разному обрабатывают html-код, не давая никакой возможности изменить некоторые правила. Но это мелочи.



Главная проблема — далеко не все почтовики поддерживают css, так что приходится делать все на голом html без дивов на таблицах — для меня это как ножом по сердцу, т.к. давно привык к блочной верстке и максимальному следованию стандартам. Из-за невозможности применения css ограничена работа с выставлением шрифтов и размеров. В html размер шрифта выставляется абсолютной величиной (1, 2, 3 и т.д. – по умолчанию 3) и шаг между этими величинами достаточно большой – это надо учитывать при создании дизайна. 1 – очень малочитабельный шрифт, так что размеры начинются с 2.



Основные проблемы с версткой для почтовых рассылок связаны с сервисом бесплатной почты mail.ru и почтовым клиентом Microsoft Outlook. Ввиду популярности, их особенности необходимо учитывать прежде всего, если нужна «кроссклиентская» верстка:



mail.ru


  • Основная проблема –замена пробелов в html-коде символами «& nbsp;», что разваливает макет напрочь. По идее, это касается только отступов слева, т.е. весь html-код следует прижимать к левому краю, но для перестраховки я избавлялся и от переходов строки, т.е. превращал исходный код в одну большую строчку.
  • Ппоменьше вложенных таблиц, попроще структуру — иначе, «мэйл» ведет себя малоадекватно. Вообще, проверено на своем опыте, что большинство проблем с версткой (да и не только с ней) решается упрощением структуры – не нужно мудрить — чем проще, тем меньше проблем;
  • Желательно не указывать явно высоту, или указывать как можно меньше, т.к. mail.ru автоматически проставляет внутренние поля, и еще добавляет к ним значение проставленной высоты, что рушит макет;
  • Из-за той же автоматической простановки внутренних полей padding лучше выставлять в «0», и управлять полями через свойство «hspace» для изображений, или банально путем простановки «& nbsp;» для текста.

Microsoft Outlook


  • Не воспринимает свойство «background», что порождает множество ограничений – приходится все изображения вставлять через
    <img src="" />
    . Можно также смириться с тем, что в этом клиенте фон не будет виден и выставить специально для него цвет по умолчанию.
  • Соответственно, из-за вышеуказанного бага невозможно создать резиновую шапку или резиновый блочный элемент – размножить изображение без CSS и без свойства background не получится. Можно, опять же, смириться, что элемент будет резиновым везде, кроме Outlook.

Небольшая ремарка по поводу рассылочной программы. Маркетологи, которые, собственно и производят рассылки в компании, где я работаю, используют ePochta Mailer. Здесь могут быть проблемы с цветом в формате #xxxxxx или RGB – отображается не тот, что нужен. Иногда это проявляется, иногда нет – возможно, это вызвано глюками или настройками рассылочной программы. Я решал эту проблему размножением однопиксельного изображения нужного цвета через свойство background – но, опять же, надо учитывать, что outlook не воспринимает это свойство. Вторым решением проблемы может быть замена цвета «словесным» эквивалентом – полная таблица представлена здесь: 35rus.ru/htmlcolor.php. Но и это решение нельзя назвать универсальным, т.к. количество таких цветов огранично 256-ю.



В целом же, большинство почтовых серверов и клиентов воспринимают код более менее одинаково и если вы вспомните, что это такое — верстать на голом html (привет, «девяностые»!), думаю, проблем возникнуть не должно. Конечно, верстка получается достаточно некрасивой и грязной в плане кода, и абсолютной «кроссклиентности» добиться довольно сложно. Остается уповать на какую-то стандартизацию и в среде почтовых клиентов.



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



Ну и, собственно, буду благодарен за пресловутое приглашение на habrahabr.ru, ради которого эта статья и опубликована.

Топик о моем пути в wxPython, wxGlade и о войне UI библиотек



О библиотеках


Те, кто задумывался над написание UI, наверняка сравнивал библиотеки (wx, gtk, qt).
Честно говоря, что касается меня то, к GTK я не очень, потому как, под Виндой эти контролы имеют «неземной» интерфейс, да и с дальнейшей дистрибуцией возникают некоторые задачи. Хотя, конечно к GTK, я отношусь с уважением, была бы голова, можно и очень матерый продукт собрать (взять тот же GIMP).
Совсем недавно Qt, сделало очень хороший ход, версия 4.5 теперь под LGPL, если еще сказать про замечательную документацию, и классную отрисовку виджетов, то рискну предположить что, в скором будущем Qt станет №1 в области GUI. Единственное что, мне не очень нравится, это стремление троллей охватить вся и всё, они и stl обернули своими классами, типа QList, и под XML парсеры и т.д… Когда используешь на Qt C++, то непонятно на чем пишешь больше на Qt или C++. Хотя опять же, все зависит от разработчика.
В последнее время я остановился на wx. Какие плюсы? Очень «скромная» библиотека, документации маловато, но спроектирована очень разумно, и при желании можно разобраться. Минусы, иногда всплывают косяки, и ограничения с которыми тяжело бороться.

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

О моем пути


Редактор


В качестве редактора питон — кода, я просматривал IDE (SPE, Wings, даже Eric) не нравятся мне все эти рюшечки, и кнопочки, поэтому я пришел к простому текстовому редактору с подсветкой. Мне нравится EditPlus, потому что очень легкий, очень быстрый, и очень простой. Файл настроек для питона я написал сам, кому интересно можете скачать. Иногда, в никсах, я пишу в Emacs, но это уже совсем другая история.

Ui designer


В качестве Ui дизайнера, лучше использовать wxGlade, хорош он тем, что может портировать не только не Python, но и на другие языки. Также генерирует очень, ясный и прозрачный код. Если вам, очень хочется разобраться в wxPython, то лучший совет вам, взять wxGlade и книжку «wxPython in Action», глядя на то что генерирует Glade, все становится ясно очень быстро.
wxGlade — оперирует понятием «авторесазовыми контролами» (где — то на хабре я прочитал такое понятие). Вкратце говоря. это философия обязательного обрамления контролов, классами wx.Sizer, которые прорисовают находищиеся в них контролы в зависимости от иерархии, привязки к бордерам и т.д. Если считаете нужным, как нибудь напишу об этом.

UML designer


Разработка крупных проектов на Python наша команда ведет в PowerDesigner. Также как, и для EditPlus, нашим top разработчиком, был написан генератор под Power Designer, собственного под Python у них по-моему нет. Разрешение на публикацию, я у него не получал по этому вешать во всеобщее обозрение не буду.

О том, о чем, хотел бы рассказать


Недавно я написал плагин к AIMP (аналог Winamp) на питоне, в будущем я надеюсь напишу о нем подробно пару статей. Плагин, кстати полезный и для кого- то может пригодиться.
У нас в офисе, 5 программеров, на одном из ПК стоят колонки и собственно проигрыватель (раньше был Winamp, теперь вот AIMP), подходит и добавлять, а также переключать музыку каждому, это изнурительно. Поэтому мой товарищ написал на Delphi плугин, который поднимает сервер обращений к AIMP, а я на wxPython, клиента который с ним общается. Получилось довольно забавно, один проигрыватель на всех в комнате. Всем кто сидит в наушниках советую. image

_________
Текст подготовлен в ХабраРедакторе

Что делать, если база безвозвратно умерла, а кеш остался, или Выдираем табличные данные из HTML при помощи регулярок

Если есть проблема с разбором текстового файла, и программист захотел решить её при помощи регулярных выражений, то у него уже как минимум две проблемы.

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

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

Представили? Ну как, поплохело?

А ведь вполне типичная ситуация.

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

Если этот HTML является валидным XHTML (мечты, о мечты...), то особенных проблем не возникнет. В другом случае задача не настолько ужасная, насколько кажется — её можно попробовать решить при помощи регулярных выражений.

Алгоритм довольно прост:
  1. Находим регион HTML-файла, в котором располагается искомый табличный контент.
  2. Находим все нужные нам таблицы, выкидывая рекламу и прочий мусор.
  3. Пропускаем все строки с заголовками.
  4. Нормализуем таблицы, обрабатывая атрибуты ячеек rowspan и colspan.
  5. Разбираем таблицы построчно и выцепляем данные.
  6. Складываем данные в CSV-файл и посылаем его заказчику.


Что касается самих данных, то они бывают, как правило, двух видов: те, которые проще выцеплять регулярками, и чисто словарные — их проще всего выбирать простым поиском по подстроке. Кроме того, иногда бывает полезно выцеплять данные за несколько проходов, пропуская определённые строки.

Если всё это правильно заскриптовать, и предусмотреть возможность гибкой настройки (скажем, через файлы с определениями, что именно считать табличными данными), то может получиться довольно-таки мощный инструмент.

Потом, через пару лет, его можно будет достать из архива и использовать для выдирания таблиц с чужих сайтов, если владелец-буржуин не предусмотрел публичного API. :)

Собственно, несмотря на эпиграф, такой инструмент уже даже существует — Repeatable Data Parser, repearser on Google Code, с примером, документацией, и парой нерешённых багов.

Лицензия MIT, пользуйтесь на здоровье.

Обстоятельства и причины смерти Дмитрия Крюкова

В последнее время Дмитрий Крюков возобновил работу над своим проектом Turtle, часто оставался на работе допоздна, а то и ночевал там. В час ночи 14 апреля брат его жены Карины Андрей (оба — сотрудники компании СТЕК, где Д.К. занимал пост генерального директора) — зашел в его кабинет и увидел Дмитрия мертвым (присел отдохнуть на диван и внезапно произошел разрыв крупной артерии в мозгу. Обширный инсульт. Не мучился, умер сразу) Как его сестра, хочу выразить признательность людям, оставившим сочувственные посты в топике. Это НЕВЕРОЯТНО поддерживает. Я только что с похорон. Отпевал его в храме Михаила Архангела в Пущино его родной отец — о. Феофан, а в миру — Крюков Виталий Иванович, математик, занимавшийся математическим моделированием деятельности головного мозга, а также его родной брат — о. Дионисий (бывший музыкант, выпускник Гнесинки) Спасибо тем, кто вспоминает Дмитрия добрым словом

[Dev Штуки] Об “идеистах” :)

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

Это идея. Древние греки, произнося это слово, имели ввиду форму, очертание, вид. А мы — что-то ошеломляющее, новое и необычное. Идеи помогли физикам и математикам построить точные науки, архитекторам — спроектировать свои шедевры, полководцам — разгромить противников, а программистам идеи помогают сделать то, что будет популярным, и, что немаловажно, будет продаваться.

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

Сегодня, когда количество приложений переваливает несколько десятков тысяч, а количество их скачиваний — миллиард, очень трудно прийти на рынок с абсолютно новым и интересным продуктом. Чаще всего это получается у уже завоевавших популярность студий, для которых делать приложения под iPhone — если не основная, то одна из задач. Для отдельных разработчиков существуют также учеба, работа, хобби и т.д., и этому всему тоже нужно уделять время. Поэтому и придумать что-то своими силами все сложнее и сложнее. А те же друзья или знакомые за свои идеи просят роялти. Да, это в шутку, но доля правды здесь тоже найдется.

Итак, хватит теории — переходим к поиску. Поиску, который, возможно даст сотни тысяч прибыли, но который сможет забрать много времени, нервов и здоровья :)

Для начала определитесь с тематикой. Будет это игра, утилита, веб-сервис или какая-то «подушка-пердушка» — решать вам. Главные критерии при выборе категории — это привлекательность и количество конкурентов.

Дальше следует задуматься о переписывании какого-то приложения с настольных или других платформ. А что, полноценный офис до сих пор не могут выпустить, может героем галактики станете вы?

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

Не наткнулись на что-то подобное? Тогда попробуйте побродить по форумам и сайтам, где пользователи просят у разработчиков воплотить(пусть даже часто оочень специфические) свои идеи. Приложение для измерения колебаний баллистического маятника не будет иметь особую популярность, но подобные варианты стоит пробовать, авось что-то да получится.

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

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

* лень — да, именно она. Здесь вы работаете без дедлайнов и авансов
* приобретение аналогичным приложением большой популярности
* неокупаемость. Время — деньги, а ваше время — деньги намного больше. Если тратится много времени, а в итоге ожидается небольшая прибыль, стоит бросать это дело
* невозможность реализации идеи. Среди них блютус, работа в бекграунде и пятимегапиксельная камера :)

В любом случае, желаю читателям данного блога найти то золотое дно, которое так и блестит… Удачных проектов! :) Ждите гико-кодерских статей.

Торренты в Германии и немецкие адвокаты!

Привет всем!

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

В сентябре 2008 года, в обычный день, пришло нам домой письмо от адвокатов «Mustermann & Musterfrau» (Название изменено) на имя моего отца. Вернее, фамилия соответствовала, а вот имя было другое. Естественно никто не обратил на это внимание и письмо было вскрыто и прочитано.

Содержание письма точно не передам, но содержание его имело в себе строки «Уважаемый, вы нарушили закон, тем, что раздавали игру MY_SUPER_GAME скачанную с сайта www.torrent.to, в фервале 2007 года. Нами было установлено, что IP 123.123.123.123 был использован вами. Во избежание судебного разбирательства, просим вас заплатить штраф в размере 120 евро.».

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

Как в Германии водится, есть такое понятие как «abzocke» или по русски «обдиралово», тоесть тебе предьявляют что ты что-то нарушил в ожидании что вы правопорядочный гражданин и заплатите наложенный на вас штраф. Нам с отцом понятие это было известно, спасибо интернету, но мы решили проверить, вдруг это действительно правда. Сразу же было установлено, что данная контора, а именно адвокатская существует, а если быть точным, то они занимались именно расследованием скачивания и распространения защищённых лицензией продуктов, тоесть игр, фильмов, музыки и дальнейшего. То, что это не было чистой воды «обдираловом» мы поняли, но было не понятно то, на какой основе, данная адвокатская контора получила наши данные у провайдера. Звонок к провайдеру обьяснил одно, милая девушка сказала нам, что наши данные они никому не давали. После чего мы просто решили положить данное письмо на полочку и подождать их дальнейших действий.

Примерно через два с половиной месяцев, пришло второе письмо опять с неправильным именем, в которой они к первой сумме видимо присто подрисовали ещё один ноль, тоесть сумма в 12000 евро. Дело стало уже серьёзней, ведь такие суммы уже не шутки, тем более что большую часть данной суммы, составляло так называемое «адвокатское расследование» — сирящее около 9000 евро, тоесть те деньги, которые адвокаты заработали честным трудом. При втором письме мы уже задумались что делать. Естественно большинство граждан в германии имеют всякие страховки и так далее, таковая имеется и для «защиты права» (Rechtschutzversicherung), где вы можете пообщеться или проконсультироваться с адвокатами. Звонок туда а потом поездка с предоставлением документов, точнее двух писем, немного прояснила ситуацию. Нам сказали что мы такие, не первые. Что нас и обрадоволо и озаботило. Оказывается, существует такой бизнес, которым занимаются некоторые торрент-сайты. Они предоставляют сервис для скачивания торрентов, где записывают ваш IP, что вы качали, когда, тоесть полный лог, а потом данные передают адвокатам с которыми и делят полученную с «порядочных граждан» выручку. Нам посоветовали написать бумагу, в которой мы должны были написать разьяснительную со словами «Да, я признаю то, что качал защищённый лицензией продукт, не осозновая и не понимая того. В дальнейшем я обязуюсь не делать такого и так далее...», но сказали ничего не платить ибо оплатив данную сумму, мы автоматически признали бы себя виновными за то, что качал я это всё осознанно, за чем могло последовать уголовное дело и судебные разбирательства. Бумага была отправлена где было так же написанно что имя указанное выше не соответствует настоящему и что в период времени скачивания, мой отец не находился в другом городе и не имел никакой возможности скачать указанный продукт.

Примерно через месяц пришло третье письмо, где сумма стала 150 евро, было исправлено имя, напечатан лог с нашим IP, нашим адресом (не MAC адресом =)), так же была копия судебного решения на выдачу провайдером наших данных. В главной бумаге стояло что мы приносим извинения за эту ужасную опечатку и то, что доступ к интернету могли иметь дети или жена, которые естественно находились дома.

Естественно пришлось опять ехать к адвокатам. Мы обьяснили опять ситуацию, что мол уже третье писмо, что надоело это и у нас сдают нервы и так далее. Адвокат просмотрел все три письма, прочёл и сказал что лучше заплатить в данном случае эти 150 евро плюс опять написать бумагу которую мы прикрепляли к первому письму. На вопрос почему в первый раз ненадо платить а щас вот платите, он сказал что если они прислали и третье писмо, то они серьёзно в нас вцепились, так как обычно они после второго письма больше ничего не присылают, а ищут более легкую жертву. Ну раз сказали, то давай попробуем. Опять написали бумагу со словами «не виноваты мы… не знали что делали...» и перевели 150 евро на указанный банковский счёт.

Вот с тех пор живём спокойно. Вопрос вот только в том, что эта контора, занимается этим серьёзно. Стоим ли мы у них в чёрном листе «нарушителей» или нет. Ну, поживём — увидим!

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

Как совет, гражданам германии, не качайте ничего с немецких торрент-трекеров и учтите, что качать, НЕ запрещено, запрещено только раздавать!!!

Удачи всем в этом деле, а тем кого такое не коснулось, удачи чтобы не касалось никогда!

Постучат.ру, проект созданный для общения, выходит в открытый бета тест.

http://www.postuchat.ru/

Разрешите мне представить вашему вниманию свежайший отечественный стартап.

Постучат.ру — проект, созданный для общения и поиска новых друзей.

Ядром сайта является система обмена мгновенными сообщениями (мессенджер) со встроенным видеочатом, историей сообщений, списком контактов и множеством других полезных модулей. Мессенджер Постучат.ру интегрирован с инструментами по быстрому профилированию и поиску пользователей. Все эти основные функции, а также множество других доступны без установки какого-либо дополнительного программного обеспечения, прямо на сайте.
Читать дальше →

Денежный стартап: быть или не быть?

Здравствуйте, хабравчане!

Это открытое письмо. Месяц назад мне пришла в голову очень оригинальная идея — «переплюнуть СОРОС», а точнее создать безопасную систему прогнозирования рынка Форекс. Две недели ушло на то, чтобы перепробовать все основные варианты реализации моей идеи. Остановился на последнем — кажется начало получаться. И действительно — первоначальный тест на прошлом, а потом и на будущем показал, что прогнозы работают как часы. Сначала я начал с валютных пар EUR/USD, сейчас уже добавил и настроил USD/CAD, USD/CHF. В дальнейшем будут и другие валюты.

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

Что это значит?


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

Бесплатно?


В основном — да. А иначе и быть не может. Ведь жить на что-то надо, но и привлекать на сайт чем-то надо. Поэтому текущие валюты бесплатны, а все новое после бесплатного тестирования будет переходить в стадию помясячной оплаты.

Планы


Основные валюты Форекс, затем возможно акции. Также на сайте в дальнейшем появятся действительно полезные книги (а не та ужасная мура, которую предлагают новичкам-трейдерам), форум…

Бесплатный сыр в мышеловке...


Эту фразу мне говорили уже очень много раз. Но в данном случае она не подходит.

Не верите? Легко проверить!


К сожалению пока что не реализована вторая ступень проекта — почасовой прогноз. Сейчас доступен только дневной — MIN и MAX в течение дня, начиная с 3 часов по Москве (или 0 по Гринвичу). На главной странице написано всё, что нужно для понимания работы с прогнозами. Не поленитесь прочитать, если вас заинтересовало.

ЗЫ: механизма не раскрываю, просто не хочется, чтобы появились дубликаты.

Кстати, ссылка на сайт: http://forex.ilost.ru