суббота, ноября 17, 2007

История

Software, №35, 2003 год, Умная синхронизация

http://kv.by/index2003351102.htm

Наверное, в период летних отпусков не многие заметили пополнение в семействе программ, выпускаемых питерской компанией ReGet Software. К знаменитой качалке ReGet Deluxe добавлен еще один продукт - утилита для "умной" синхронизации данных WebSynchronizer. Вкратце о программе упоминала Светлана Середа, PR-менеджер компании (см. интервью с Владимиром Романовым - автором ReGet, опубликованное в №33).

В чем же, собственно, состоит суть программы? Все просто: она сравнивает даты изменения файлов в двух указанных папках и перезаписывает более свежие копии на место устаревших. В результате получаются две идентичные папки, содержащие самые последние версии файлов. При этом WebSynchronizer копирует не весь массив данных, а только те файлы, которые были изменены с момента предыдущей синхронизации. Очень кстати и встроенный планировщик - с его помощью WebSynchronizer может самостоятельно выполнять повторяющиеся действия: например, регулярно производить синхронизацию файлов в назначенное время или выключать компьютер после выполнения всех задач. Программа практически не заметна: мирно сидит в System tray и делает свое дело.

А умения утилиты оказываются полезными в ряде случаев. Так, можно всегда синхронизировать содержимое двух папок на локальном компьютере, двух удаленных папок, а также папок, одна из которых находится на локальном компьютере, а другая - на удаленном. Таким образом, обрисовывается круг решаемых задач. Например, подобным образом можно осуществлять резервное копирование, периодически обновлять содержимое web-сервера (очень полезно при постоянном подключении к интернету) или в конце рабочего дня скидывать наработки на Flash drive и переносить их на домашний компьютер.

Конечно, закачивать данные на удаленный сервер можно и с помощью обыкновенного FTP-клиента, а программ для резервного копирования - так вообще пруд пруди. Но следует учесть, что отличительная черта WebSynchronizer, как и Reget Deluxe, - это работа в несколько потоков, поэтому задачи копирования выполняются значительно быстрее. Да и потом, в случае обрыва связи, что актуально "в наших широтах", синхронизация может быть продолжена с места обрыва. Актуальна и возможность ручного регулирования трафика: его можно при необходимости ограничить, чтобы не мешать выполнению других более важных задач. Интерфейс программы очень схож с ReGet (еще бы!) - так что проблем разобраться с WebSynchronizer не возникнет.

Автор программы WebSynchronizer - Павел ФЕДОРЦОВ. Ему 19 лет, учится в СПбГУТ им. проф. М.А Бонч-Бруевича. В компанию ReGet Software попал после выполнения тестового задания.







Наши дни


Теперь WebSynchronizer - open source.

SOFT32.com, Editor's Review - WebSynchronizer, 05/03/2007

http://www.soft32.com/download_5230.html



5
out of 5
Excellent



Features

Stability

Usability

Interface








WebSynchronizer is now free! This very good tool used to be shareware, but now it's open-source and its code is freely available on SourceForge. WebSyncronizer can be used for synchronizing data between drives, network computers, or remote servers. It compares the files, based on their modified date. The older files are replaced automatically by newer ones, but you must choose which ones to overwrite.

The synchronization tasks are divided into three categories (local - remote, remote - remote, local - local). You can choose not to modify the files from the source drive. It's also possible to define a task which copies files from one location to another without comparing them. WebSynchronizer provides a "new task" wizard, which is great for beginners. This wizard should be able to help you configure tasks in an easy step by step process.

I use this software to upload modified files to my FTP server. Instead of uploading an entire website, WebSynchronizer only uploads the files that were modified recently. This saves a great deal of bandwidth and makes it easier to maintain a website synchronized with a local copy.

Pluses: You can customize each task's priority by setting a traffic limit and the number of connections to a server. Three traffic modes (suspended, cooperative, and unlimited) are supported and can be easily activated anytime you like. Websynchronizer also features a scheduler, which can be used to start any of your synchronization tasks automatically.

Drawbacks / flaws:

In conclusion: I consider this software to be the best synchronization tool. This is just my opinion, so I suggest you try it yourself.






100% clean - WebSynchronizer - certified by soft32.com Editor's Pick - WebSynchronizer Excellent - Editor's Review

http://sourceforge.net/projects/websynchronizer/

вторник, сентября 18, 2007

Как доставляют почту в Туркменистане...

четверг, сентября 13, 2007

Технология длительных путешествий

Сергей Жаров, - интересный материал от путешесвуюшего

"Короче, в натуре, есть целый мир, про который мы ничего не знаем, — мир длительных путешествий. А там столько людей, и катаются по году и более без перерыва. Только русских нет. А почему их нет? Потому что они неправильно думают.

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

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

А какие проблемы есть? Две: что с собой брать и как не облажаться.

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

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

Короче, учитесь на ошибках других."

Читать дальше: http://www.zharov.com/tehno/index.html

среда, августа 15, 2007

Путушествие по северной африке




Tunisia



понедельник, июля 16, 2007

Записки сумашедшего

Такой вещи, как идеальный текст, не существует. Как не существует идеального отчаяния.
Харуки Мураками, «Слушай песню ветра»

Что такое хороший язык программирования и каким он должен быть? Всякое люди говорят – тут тебе и дуракоустойчивость (прошу прощение, «защита от новичка»), и Тьюринг-полнота, и формализуемость, и еще 1024 критерия. Ерунда. Все нижеследующее просьба рассматривать как эссе в вольном стиле, а не научную статью.

Бывают языки красивые, бывают строгие, бывают такие, которым легко обучиться, бывают такие, на которых легко писать. Их не используют.
Бывают такие, в которых черт ногу сломит – и на них пишет полмира(сноска: Программистского мира, естественно, раз уж мы о языках программирования.), но никто не любит.
Бывают языки сложные и неочевидные: чтобы писать на них хорошие программы, нужно учиться несколько лет и прочесть кучу книг. В них влюбляются, им посвящают стихи, о них спорят до хрипоты, визга и метания в собеседника банановой кожуры.
***
Я – программист. Я знаю пять языков – и верен одному. Я прочел два десятка книг только об этом языке – а хотел бы две сотни. Я могу математически доказать правильность своей программы – и скрещиваю пальцы на удачу, когда запускаю ее на компиляцию. Я могу переписать одну строку восьмью разными способами – но работает только девятый. Я безнадежен.
***
Один мой коллега (и все профессора в моем институте) верят, что главное – это научиться программированию. Мол, человек, умеющий программировать вообще, за пару недель освоит новый язык и будет писать на нем великолепные программы. Поэтому в университетских курсах огромное количество сухой(сноска: Ну, черт с ней, полусухой.) теории, а языки преподаются на уровне пресловутого «Хелло Ворлд». Но это все равно, что научить стихосложению вообще – а потом студент за пару недель осваивает финский или хинди и выдает первоклассные стихи, входит в историю поэзии и энциклопедический словарь. Вроде абсурд получился.
Каждый язык программирования – из тех, в которые влюбляются – порождает свою культуру. Совершенно так же, как человеческий язык. У него есть свой букварь(сноска: Кафедра Программного обеспечения, курс «Язык С++», 48 часов. (с) расписание 2-го курса.). Но это – только самое-самое начало. Есть лексика – и даже нецензурная(сноска: Скажите любому опытному С++-программисту магическое слово goto. Только с безопасного расстояния.) (как и в естественном языке, иногда она бывает к месту). Есть синтаксис. Это все вещи понятные, относительно легко изучаемые и относительно легко формализуемые. Именно поэтому можно автоматизировать проверку синтаксической и лексической правильности как программы, так и данной статьи.
Но и это все – лишь начало. Ни «Война и мир», ни «безбашенная» проза Харуки Мураками, ни «Linux» – не являются математически стройными системами. Их нельзя назвать написанными «правильно» или «неправильно». Более того, и то, и другое, и третье можно было написать несчетным(сноска: В математическом, а не поэтическом значении этого слова.) количеством различных способов – но написаны (и ценны) они именно такими.
Нельзя «научить» писать эпиграммы, сказки или статьи, которые нравятся редакторам «Компьютерры». Каждое такое произведение – это результат творческого переосмысления опыта предыдущих поколений + немножко вдохновения + владение языком + собственный стиль. Нельзя научить писать программы на C++ – это результат [см. выше].
***
У этого языка есть свои идиомы – краткие, но очень емкие конструкции. Есть традиции – и возможность плевать на них. Есть свобода выбора стиля. Есть возможность различными словами написать одну и ту же фразу. Есть классика – и есть классики: Бьярн Страуструп, Джефф Элджер, Герб Саттер, Николай Джосаттис. На этом языке можно сказать двусмысленность – и не получить линейкой по рукам от компилятора(сноска: …а трое суток искать, почему программа вылетает, когда i=17.). Здесь есть место творчеству – здесь есть место спорам – здесь есть место 48-часовым марафонам по отладке программ. Есть тонкости, доступные только снобам. Здесь нет только одного – места, где можно было бы остановиться и сказать: все, ничего нового для меня в этом мире не осталось.
***
Поймите меня правильно – пользователю, в общем-то, плевать, на каком языке написана программа и насколько освоился в этом языке ее автор. В отличие от написания текстов, в программировании конечный продукт очень слабо связан со стилем и культурой автора текста(сноска: Естественно, связан сильно, но совершенно неочевидно для конечного потребителя.). Тем не менее, программа, которой «еще жить и жить» от версии к версии, просто обязана быть красивой – а не то в следующей версии никто уже не поймет, куда там дописывать новый кусок и почему старый до сих пор работает и «черт побери, кто вообще это писал?!» Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
***
Поймите меня правильно еще раз. С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код(сноска: Кстати, это уже шаг в сторону автоматической генерации программ или «Цель деятельности всех программистов – чтобы их деятельность стала не нужна».). Язык, в котором шаг влево, а равно и шаг вправо просто нельзя выразить средствами языка.
Язык, который никто и никогда не будет любить.
***
Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.


Опубликовано КТ №22

пятница, июля 13, 2007

воскресенье, мая 20, 2007

Какой подарок можно подарить на день рождения?...


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

Вот как все было:
Воскресенье 20-го мая, где-то в начале дня. Мы едем от станции метро пр. Просвещения на какой-то специально подготовленной маршрутке по направлению к городу Выборг. Перед нами открываются замечательные виды на финский залив, леса и просторы ленинградской области.
В этот момент я еще не в курсе того куда и зачем мы едем, знаю только о том, что это должен быть сюрприз. Когда я увидел табличку г. Выборг, было, подумал что это будет экскурсия по славному городу, но не тут-то было.
Извиваясь и петляя по каким-то полупроселочным дорогам, мы попадаем на небольшой полувоенный аэродром. Экскурсии по аэродрому - это как-то странно подумал я. Круг догадок постепенно сужался... Окончательно все стало ясно, когда специальный человек в камуфляжной форме, из тех, что работали на аэродроме, начал объяснять мне основы управления самолетом, одним из тех, что стоял неподалеку. Не могу вспомнить название самолета, эта машина какого-то Литовского производства. Специальный человек, он же - инструктор, рассказывал про виды скоростей - воздушную и земную, еще что-то... Смущало только то, что он постоянно повторял о том, что якобы 80% полета должен буду управлять самолетом я сам. Честно признаюсь, что был немного не готов к таким развлечениям, да и в кабине пилота никогда не сидел.
После краткого инструктажа, садимся в аппарат. Инструктор объясняет - что можно нажимать, а что нельзя, как рулить влево, вправо, вниз, вверх... вообщем, на первый взгляд, ничего сложного. К счастью, взлетом и посадкой инструктор пообещал заняться сам :)
Взлетели быстро и плавно, немного полетали над финским заливом неподалеку от Кронштадта. Сверху открывается потрясающий вид. Рулить самолетом оказалось несложно, инструктор давал точные команды - когда нужно поворачивать, набирать или снижать высоту, объяснил как пользоваться приборами. Хотя поначалу, штурвал показался мне слишком чувствительным - чуть тронешь, как самолет начинает заваливаться набок, но спустя всего пару минут к этому привыкаешь.
В самом конце полета инструктор спросил где находится аэродром, пришлось немного подумать и прикинуть, но вроде я указал в правильную сторону :)
Приземлились достаточно мягко, летчик видимо опытный.
Ощущения - отличные! Солнышко светит, птички поют, радости полные штаны :)




Летное воскресенье



воскресенье, января 28, 2007

Пострелушки "Бекас-М"



суббота, января 27, 2007

Я давно его хотел



D is an object-oriented, imperative, multiparadigm system programming language by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is predominantly influenced by that language, it is not a variant of C++. D has redesigned some C++ features and has been influenced by concepts used in other programming languages, such as Java, C# and Eiffel. A stable version, 1.0, was released on January 2, 2007.

D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability.

D is statically typed, and compiles direct to native code. It's multiparadigm: supporting imperative, object oriented, and template metaprogramming styles. It's a member of the C syntax family, and its look and feel is very close to C++'s. For a quick feature comparison, see this comparison of D with C, C++, C# and Java.


// Simple sample: how to use delegates within objects

import std.c.stdio;

// DelegateClass: a class with declared delegate function "printText"
class DelegateClass
{
public void delegate(char[] ) printText;
}

int main()
{
// Function print
void print(char[] text) { printf(text); }

// Initialize a DelegateClass
DelegateClass delclass = new DelegateClass();

// Assign the delegate "printText" to function "print"
delclass.printText = &print;

// Call printText to test

delclass.printText("HELLO\n");

return 0;
}
D perfomance:
http://www.functionalfuture.com/d/

Other links:
http://www.digitalmars.com/d/
http://en.wikipedia.org/wiki/D_language

среда, января 03, 2007

Путешествие по странам Cкандинавии





Празднование нового года на пароме Silja Line по пути из Хельсинки в Стокгольм