Яндекс.Метрика
    Поиск по тегу

    программирование


    Найдено: 51 запись

    Песочница

    В ответ на статью :«Кто кого учит: преподаватель студента или студент преподавателя?»

    Доброго времени суток, уважаемые читатели, программисты и все, кто читает эту статью.

    Наверное многие прочитали статью Кто кого учит: преподаватель студента или студент преподавателя?, в которой рассказывалась суть обучения в IT ВУЗах, да и не только.

    В этой статье хотел пояснить роль ВУЗа в развитии на примере физики и информационной ее составляющей. Кому интересно, прошу под кат.
    image

    Я студент третьего курса одного из лучших ВУЗов страны. Занимаюсь и физикой и информатикой. Регулярно пишу не самые сложные сайты, в целях самосовершенствования. Уже около трех лет регулярно читаю Хабрахабр.

    Я думаю, не меня одного вдохновила к каким-то действиям статья, указанная выше. Да, там объемно и объективно описаны проблемы образования в IT-сфере. Но ведь почти не указаны плюсы университетского образования.

    В моем университете есть хорошая физическая база, к которой без особых навыков программирования просто не подойти. Изучив основы LabVIEW и примитивного Turbo pascal мы можем приступать к работе в лабораториях. Конечно же на первых курсах были примитивные работы, в которых не надо было особых навыков. Преподаватели в возрасте, похожие на описанных в прошлой статье, говорившие, что «за консольными приложениями будущее» утверждали, что за паскалем кроется вся основа исследовательских работ в физике( имелось ввиду: сбор и обработка данных).Такой метод долгий и муторный. Куда проще в LabVIEW просто собрать себе приборную панель, задать значения приборам и написать алгоритм измерения на любом приятном лаборанту языке программирования.
    Это если совсем кратко. При желании напишу более подробно о всех процессах связанных с программированием в физике, жду пожеланий в комментариях.

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

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

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

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

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

    Чтобы хоть как-то визуализировать все сказанное, привел картинку, на ней изображен просвечивающий электронный микроскоп JEM- 2100F, к которому без особых навыков в физике и программировании подпустят только пылинки сдувать.

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

    Жду критику и пожелания в комментарии.

    Песочница

    Решение обратной задачи аналитической геометрии. Теория R-функций

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

    Немного теории


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

    Песочница

    Получение прямой ссылки на видео vkontakte

    Предисловие


    Здравствуйте. В этой статье я поделюсь с вами пожалуй единственным способом получения ссылки на видео из контакта.
    Всё началось с того, когда мне в процессе разработки своего android-клиента потребовалась функция воспроизведения и скачивания видео. А для этого, естественно необходима ссылка. А как вы знаете, максимум, что мы можем получить — это ссылку на страничку с плеером, откуда прямую ссыль хрен выудишь.
    Тогда я начал гуглить на эту тему, но ничего толкового не нашёл.
    И тогда я решил придумать свой способ её получения.

    Что я придумал


    Первым делом я обратил внимание на программу VK Saver. А в частности на их сайт. Там всё происходит таким образом:
    1) Вы устанавливаете программу, которая в последствии интегрируется в браузер.
    2) Теперь при заходе на страничку с видео у вас внизу появляется кнопочка s, которая ведёт на ссылку вида v.audiovkontakte.ru/video-xxxxx (xxxxxx-это id этого видео.)
    3) На этой страничке можно это видео посмотреть и скачать, нажав на специальную кнопочку)

    Порывшись в исходном коде этой страницы я кое-что нашёл:

    Вот этот элемент:

    <form action="/download.php?type=vks&host=465.gt3.vkadre.ru&no_flv=0&vtag=750c48ae2867-&vkid=92359355&uid=0&hd=0&plugin_hash=202cb962ac59075b964b07152d234b70&plugin_ver=3.1.110425.1262&vvideo_id=161693266&artist_name=&clip_name=%25ED%25E5%2B%25E4%25E0%25E9%2B%25C1%25EE%25E3%2B%25F2%25E0%25EA%25EE%25E5%2B%25EF%25F0%25E8%25F1%25ED%25E8%25F2%25F1%25FF%2521" target="_blank" method="POST"><div class="clip_name"><strong>не дай Бог такое приснится!</strong></div><div id="player"><embed src="/images/player/player.swf" width="460" height="345" allowscriptaccess="always" allowfullscreen="true" flashvars="height=345&width=460&file=http://465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv&image=http://465.gt3.vkadre.ru/assets/thumbnails/750c48ae2867-92359355.320.vk.jpg&displayheight=345&searchbar=false" /></div><div class="download_url"><a href="javascript:document.forms[0].submit();" onclick="p = document.getElementById('player'); if (p) {p.style.display = 'none'; p.style.display = 'block'; p.innerHTML = p.innerHTML + ' '}" title="Скачать">СКАЧАТЬ</a>


    Обратите внимание на строку
    flashvars="height=345&width=460&file=http://465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv&image=http://465.gt3.vkadre.ru/assets/thumbnails/750c48ae2867-92359355.320.vk.jpg&displayheight=345&searchbar=false"


    И здесь мы замечаем ссылку 465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv

    Перейдя по ней, мы загрузим видео!
    По идее это и есть то, что нам нужно.
    И обычный пользователь легко может скачать видео, даже не влезая в исходный код.
    Но для моих целей это явно не подходило.
    Хотя с первого взгляда всё было элементарно: Получаем id видео, строим ссыль на v.audiovkontakte.ru, и парсим с помощью регулярок исходный код на наличие нужной нам ссылки.
    Но первая проблема обнаружилась, когда я попытался собрать ссылку и перейти по ней.
    Но почему-то меня сразу же выкидывало на главную страницу сайта.
    Оказывается, что преход возможен только через нажатие на кнопку.
    Поэтому мне пришлось отложить эту идею.
    Но у меня остался формат прямой ссылки на видео.
    И вроде бы всё хорошо, но нам остаётся неизвестным происхождение одной строки:
    465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv
    Скорее всего это какой-то хэш или идентификатор этой записи, и как его получить — неизвестно.

    Совсем отчаившись, я решил последний раз глянуть на плеер, ссылку на который мы можем получить либо нажав на кнопку поделится>Получить код видео (
    <iframe src="http://vkontakte.ru/video_ext.php?oid=13257647&id=161693266&hash=5817a3ba0588efa8&sd" width="607" height="360" frameborder="0"></iframe>
    ), либо послав запрос к API, что, я думаю, будет более актуально.

    Меня заинтересовал следующий блок:

    <param name="flashvars" value="uid=0&vid=161693266&oid=13257647&host=465.gt3.vkadre.ru&vtag=750c48ae2867-&ltag=1423ac11&vkid=92359355&md_title=%D0%BD%D0%B5+%D0%B4%D0%B0%D0%B9+%D0%91%D0%BE%D0%B3+%D1%82%D0%B0%D0%BA%D0%BE%D0%B5+%D0%BF%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D1%82%D1%81%D1%8F%21&md_author=%D0%94%D0%B8%D0%BC%D0%BE%D0%BD+%D0%A8%D0%B8%D1%80%D0%BE%D0%BA%D0%BE%D0%B2&hd=0&no_flv=0&hd_def=-1&dbg_on=0&t=&thumb=http://465.gt3.vkadre.ru/assets/thumbnails/1423ac1192359355.460.vk.jpg&hash=3b900fad1e7a6c5606e40e31273ca26d&hash2=5817a3ba0588efa8&is_vk=0&is_ext=1&lang_volume_on=%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C+%D0%B7%D0%B2%D1%83%D0%BA&lang_volume_off=%D0%A3%D0%B1%D1%80%D0%B0%D1%82%D1%8C+%D0%B7%D0%B2%D1%83%D0%BA&lang_volume=%D0%93%D1%80%D0%BE%D0%BC%D0%BA%D0%BE%D1%81%D1%82%D1%8C&lang_hdsd=%D0%A1%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C+%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE&lang_fullscreen=%D0%9D%D0%B0+%D0%B2%D0%B5%D1%81%D1%8C+%D1%8D%D0%BA%D1%80%D0%B0%D0%BD&lang_window=%D0%A1%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C&lang_rotate=%D0%9F%D0%BE%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C&video_play_hd=%D0%A1%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C+%D0%B2+%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D0%BC+%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5&video_stop_loading=%D0%9E%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C+%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D1%83&video_player_version=%D0%92%D0%9A%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE+%D0%BF%D0%BB%D0%B5%D0%B5%D1%80+&video_player_author=%D0%90%D0%B2%D1%82%D0%BE%D1%80+%D0%BF%D0%BB%D0%B5%D0%B5%D1%80%D0%B0+-+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9+%D0%A5%D0%B0%D1%80%D1%8C%D0%BA%D0%BE%D0%B2&goto_orig_video=%D0%9F%D0%B5%D1%80%D0%B5%D0%B9%D1%82%D0%B8+%D0%BA+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8&video_get_video_code=%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+%D0%BA%D0%BE%D0%B4+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&video_load_error=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%D1%84%D0%B0%D0%B9%D0%BB+%D0%B5%D1%89%D0%B5+%D0%BD%D0%B5+%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D0%BB%D1%81%D1%8F+%D0%B8%D0%BB%D0%B8+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80+%D1%81+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%BC+%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE+%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B5%D0%BD&video_get_current_url=%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D1%83+%D0%BD%D0%B0+%D0%BA%D0%B0%D0%B4%D1%80"></param>


    А если проверить его на наличие совпадений с тем самым хешем, то он будет сдесь: value=«uid=0&vid=161693266&oid=13257647&host=465.gt3.vkadre.ru&vtag=750c48ae2867-&ltag=1423ac11&vkid=92359355&

    Отлично! Это говорит нам о том, что мы все таки можем достать прямую ссылку!

    Алгоритм получения ссылки



    1) С помощью запроса к API получаем id видео и ссылку на плеер
    2) С помощью регулярок парсим код на наличие строки с параметром vtag и вытаскиваем идентификатор
    3) Строим прямую ссылку:
    465.gt3.vkadre.ru/assets/videos/идентификатор-id видеозаписи.vk.формат

    humour

    Три самых любимых бага

    Бывают баги а бывают и БАГи. И если баги обычно фиксятся и забываются, то БАГи остаются с нами навсегда. Хочу поделиться с Вами тремя такими БАЖищами.

    Первый такой казус произошел в 2005 году, когда я работал на фирме FriendScout24. У нас была тулза для мониторинга, в которой была хтмлная табличка и в каждой строчке по серверу. Если сервер отвечал нормально — он отрисовывался зеленным, если нет то красным. Обычно всё было спокойно зелененьким. И тут, в один прекрасный августовский день, сервера начали падать лесенкой. Пам-Пам-Пам — 4 сервера за 3 минуты. Через 5 минут всё снова позеленело, как будто ничего и не было.

    Ни о чём

    Поздравление с Новым 2012 годом на 150 языках

    Уважаемые Хабравчане!
    Поздравляю вас с наступающим новым годом! Желаю Вам творческих успехов, карьерного, интеллектуального и духовного роста!

    И хочу сделать вам небольшой подарок: поздравления с новым годом на более чем 150 языках программирования!

    image

    Песочница

    DigestSDK — автоматизация работы с MSSQL на Delphi

    Вступление


    Несколько лет назад мне пришлось реализовать работу с таблицами базы данных MSSQL сервера. После написания некоторого количества, фактически однотипного кода, пришла мысль автоматизировать эти «рутинные» действия.
    Согласитесь, что написание одного и того же кода, отличающегося только структурой таблиц БД, не может никого вдохновить. К тому же, если кол-во таблиц, с которыми приходиться работать переваливает за десяток, то занятие из разряда скучное — переходит в разряд трудоемкое.
    Поиск в интернете на тот момент не дал результатов, поэтому реализацию пришлось взять на себя. .
    В результате был создан набор модулей (в дальнейшем DigestSDK) на языке Delphi, позволяющих избавить программиста от написания «стандартного» кода по работе с БД и сосредоточиться на логике самого приложения. .
    Демонстрационные примеры, исходные коды и видео по работе с DigestSDK выложил на SourceForge (авось еще кому да и пригодится, заодно и хабр эффект проверим в очередной раз:-))..

    Итак, DigestSDK позволяет отобразить содержимое таблиц MSSQL сервера (в дальнейшем планируется реализация для остальных популярных БД) и автоматически предоставляет следующие возможности:

    Перечень стандартных функций


    После создания справочник автоматически содержит следующие функции:
    • добавление;
    • удаление (в том числе групповое);
    • редактирование (в том числе групповое);
    • поиск (с возможностью частичного соответствия);
    • сортировка (при нажатии на заголовке DBGrid)
    • сортировка (с указанием множества полей и порядка сортировки);
    • выделение записей;
    • подсчет кол-ва записей для текущей выборки и выделенных записей;
    • быстрый переход на указанную запись;
    • задание максимального кол-ва отображаемых записей;
    • сохранение последнего состояния справочника в БД или в файле (настройки колонок, последний запрос, условия отбора и сортировки, положение формы);
    • настройка отображаемых колонок (видимость, ширина, положение);
    • автоматический перевод английских наименований в соответствии с пользовательским справочником.

    Дополнительные возможности


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

    Представленный перечень функций и возможностей далеко не полный и может быть расширен программистом за счет переопределения и/или написания собственных дополнительных функций.
    Приведу фрагмент кода по созданию справочника с выборкой данных из таблицы Production.Product (из демонстрационной БД AdventureWorks к MSSQL 2005).
    В данном примере вызывается конструктор класса TSimpleDigest, которому передается: sql запрос, имя таблицы в БД (к которой будут применяться операции добавления, изменения и удаления), обычная строка подключения ADO, указание где создавать справочник (TWinControl или nil, если на новой форме) и идентификатор оператора – некоторое целое число – код, под которым справочник будет сохранять свое последнее состояние.

    Пример использования с демонстрацией результатов.


    Пример программы создания:
    
    //создаем основой справочник
    DigestProducts := TSimpleDigestR.Create(
        'select top 10 * from Production.Product',//произвольный запрос  
        'Production.Product',//Имя таблицы для изменения
        ConnectionString,    //Строка подключения
        nil,  		       //Где создавать справочник 
        0                    //Идентификатор оператора  (для сохранения настроек)
    );
    //открываем справочник
    DigestProducts.Open();
    DigestProducts.ShowModal;
    


    Результат выполнения:
    DigestSDKDemo

    Небольшой ролик по созданию справочника


    Пример как подключить файлы к проекту и написать простейший код для отображения содержимого БД cars (находится в папке Demos\Cars\DataBase")


    Ролик, демонстрирующий основные возможности DigestSDK


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


    Исходные коды. примеры и демонстрационную БД (cars) можно скачать тут

    Остальные видео-примеры по работе тут

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

    DigestSDK поддерживает с MSSQL 2005, 2008, 2008 R2.
    Работостпосбность проверена для Delphi 7, 2007, XE2
    Более подробное ознакомление: http://sourceforge.net/projects/digestsdk/

    humour

    Политический плакат от программистов

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



    Полный список в ЖЖ (от прогеров больше ничего нет).

    Реклама

    Конкурс Microsoft Research по компьютерному зрению для Kinect

    image

    Если ты студент или аспирант, увлекаешься компьютерным зрением и мечтаешь создать технологию, которая перевернет мир, приглашаем участвовать в конкурсе Microsoft Research по компьютерному зрению!

    Для участия в конкурсе нужно придумать интересное применение Kinect и до 15 января подать заявку с кратким описанием проекта. До 28 февраля требуется разработать прототип программы на основе Kinect for Windows и подготовить видеоролик на английском языке, демонстрирующий работу прототипа. Компетентное жюри отберет 5 лучших работ, авторы которых отправятся в Кембридж (Великобритания) на школу Microsoft Research, где смогут представить свои проекты и пообщаться с авторами технологий Kinect. Сертификаты победителям вручит вице-президент Microsoft Research Connections Тони Хей.

    Более подробную информацию о конкурсе можно найти на сайте summerschool2011.graphicon.ru/en/contest.

    Песочница

    Пример использования недокументированной функции Windows

    Большая часть программ от Sysinternals использует недокументированные функции. Мне хватило этого факта, чтобы заинтересоваться этой темой. Интересно, как крутые дядьки используют неописанные функции в своих не менее крутых программах.

    Предполагаем, что мы в нужной степени ленивые программисты, знаем С, в ладах с WinAPI и с архитектурой современной ОС Windows и у нас есть Ida Pro, хе-хе. Хотим красиво, быстро и эффективно выполнить задачу, не изобретая велосипед (и чтоб ещё сильно не перенапрячь руки и голову).

    cpp

    На какие из вопросов вы можете с уверенностью ответить?

    5.84%
    (31)
    Как расшифровывается аббревиатура SOLID?
    19.02%
    (101)
    Как реализовать паттерн одиночка (singleton)?
    10.55%
    (56)
    Как реализовать паттерн обертка (wrapper)?
    14.69%
    (78)
    Зачем нужен виртуальный деструктор в C++?
    20.34%
    (108)
    Чем абстрактный класс отличается от интерфейса?
    7.91%
    (42)
    Чем представлено отношение общее/частное в исходном коде?
    7.72%
    (41)
    Чем представлено отношение часть/целое в исходном коде?
    13.94%
    (74)
    Чем реализация интерфейса качественно отличается от наследования от абстрактного класса?

    Проголосовало 132 человека. Воздержалось 95 человек.

    Заработок в Сети

    Дао web-программиста

    Как ни странно, но в Интернете легче заработать тем, кто умеет писать программный код. Особенно для сайты. Поэтому от себя автор искренне советует всем, кто обладает МАТЕМАТИЧЕСКИМ СКЛАДОМ УМА начать изучать язык программирования. Для веба идеально подходит PHP. Да, сейчас элитные программисты закукарекают о том, что ПоХаПэ для недочеловеков, а Питон/Рубин/Пёрл для богов, шлите их смело. PHP прост и, на данный момент, самый популярный язык для написания сайтов. Идите на торрент-треккер и качайте книги либо видео уроки по всему, что перечислено ниже.

    Реклама

    Разработка игрового приложения под iPhone. Часть 3

    Crab It!

    Время разработки — 6+ месяцев двух человек в свободное от работы время.
    Состав команды — 1 художник 1 программист.
    Время от идеи до прототипа — 1 неделя
    Арт данные — 288 мегабайт, 1400 файлов
    Код Движка и Игры (без сторонних библиотек) ~ 50024 строк кода, 485 файлов
    Код Игры — 4338 строк — 12 файлов
    Финальный размер дистрибутива для аплоада в AppStore 22мб
    Финальный размер в AppStore 25мб

    Ни о чём

    Про IT в Азербайджане

    image Раз уж сегодня неделя миграции на Хабре…

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

    Ни о чём

    Живучие программы

    Есть у меня приятель, который в свое время написал на работе пару программ. Делал он это, что называется, для души — просто брал и автоматизировал свою деятельность. Поначалу на его работу никто не обращал внимания, мол, ковыряешься и Бог с тобой. Через некоторое время программы стали «расползаться» — приходили люди из соседних отделов, затем из соседних контор и просили поделиться. Где-то через полтора года мы насчитали более 100 инсталляций программы, притом что у нее отсутствовала документация и техподдержка. Это было в 2001 году. В 2002 году приятель поменял область деятельности и перестал заниматься разработкой. Программы разошлись уже в другие регионы, по одной из них была написана дипломная работа. Денег с программ приятель не получил, да и не особо старался.
    Интересное началось в этом году, когда распоряжением головной конторы, расположенной Москве, обе программы были сначала заменены на централизованные, а затем и вообще отключены. По факту оказалось, что практически во всех подразделениях, эксплуатировавших программы моего приятеля, сотрудники заполняли данными обе программы, и московскую, и «свою».
    Отключение продолжалось недолго — одну программу вернули через 3 дня, другую — через две недели. Более того, приятелю хотят заплатить за развитие обеих программ, а одну из них информатизаторам вменили внедрять во всех подразделениях в обязательном порядке.
    Мораль сей басни такова: если программа пишется снизу, от потребности, то люди будут за нее горой и жизнь у нее будет долгая, хотя, быть может, не всегда счастливая. В отличие от программ, насаждаемых сверху, которыми люди пользуются, но зачастую тихо ненавидят.

    Ни о чём

    Конкурс для программистов №4

    Имеется среда и множество факторов, влияющих на состояние среды. Каждый фактор множества факторов может либо присутствовать в этом множестве либо отсутствовать. Общее количество различных факторов равно 32

    Состояние среды определяется массивом из тридцати двух характеристик среды. Каждая характеристика среды это целое число в интервале [0..255]

    Каждый присутствующий фактор множества факторов вносит свой вклад в каждую характеристику состояния среды, увеличивая значение каждой характеристики на целое число в интервале [0..255]

    Вклады всех факторов суммируются для каждой характеристики среды. Пустому множеству факторов соответствует состояние среды с нулевыми значениями всех характеристик.

    Имеются входные соответствия: множество факторов 1 -> состояние среды 1. Используя входные соответствия необходимо определить как можно больше правильных соответствий для заданного множества факторов 2.

    Ни о чём

    Конкурс для программистов №4

    Проект ttools.ru объявляет конкурс для программистов №4!
    О конкурсах проекта можно почитать в рубрике “Конкурсы” блога ttools.ru
    О задаче конкурса №4:

    Предыдущая задача конкурса №3 была быстро решена участниками на все 100%. Был продемонстрирован способ решения  гораздо  проще, чем предполагалось. Это произошло благодаря исходным данным задачи, допускающим такую возможность и сообразительности участников. В целом  такие неожиданные повороты событий радуют, это добавляет интриги, но в то же время  заставляет  аккуратнее подходить к составлению заданий и подготовке исходных данных. На этот раз я предлагаю заново решить задачу конкурса №3, но с новыми исходными данными, которые (как я надеюсь) сделают задачу именно тем, что предполагалось изначально

    Спонсоры:

    Спонсором этого конкурса является компания "Фондовые технологии" — разработчик программного обеспечения SAT, служащего для создания, тестирования и эксплуатации торговых роботов под Quik, SmartCOM и Plaza-2.
    Спонсор предоставляет денежный приз победителю конкурса №4 в размере 2500 рублей

    Реклама

    YAPC::Russia 13–15 мая в Москве

    С 13 по 15 мая в Москве пройдет четвертая конференция YAPC::Russia, посвященная языку программирования Perl и его сообществу. В этом году конференция совмещена с ежегодным украинским Perl-воркшопом Perl Mova.

    Трехдневная программа состоит из хакатана по Perl 6 и докладов про современные версии языка и приложения на их основе.

    humour

    Эволюция Python-программиста

    Начинающий


    1. def factorial(x):
    2.     if x == 0:
    3.         return 1
    4.     else:
    5.         return x * factorial(x - 1)
    6. print factorial(6)


    Программирующий уже год (Ранее изучавший Pascal)


    1. def factorial(x):
    2.     result = 1
    3.     i = 2
    4.     while i <= x:
    5.         result = result * i
    6.         i = i + 1
    7.     return result
    8. print factorial(6)