Архив метки: Информационные технологии

Пришло время обновить Messenger до Skype!

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

Сообщение от команды разработчиков…

Читать далее

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

[CRM] Как получить все данные, если CRM 2011 имеет лимит 5000 записей на ответ

Приходится работать с все большим объемом данных, столкнулся с тем, что CRM имеет ограничение на получение данных через Fetch-запросы. 5000 записей. Многие наверное замечали, к примеру, что на гридах сущностей CRM, имеющих больше 5000 записей в поле количество под гридом обычно указано просто 5000+.

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

  1. Click Start, click Run, type regedit in the Open box, and then click OK.
  2. Locate and then select the following registry subkey:HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM
  3. On the Edit menu, point to New, and then click DWORD Value.
    image
  4. Type TurnOffFetchThrottling, and then press ENTER.
    image
  5. Right-click TurnOffFetchThrottling, and then click Modify.
    image
  6. Type a number other than 0 in the Value data box, and then click OK.
    imageimage
    Note Step 6 lets you retrieve the number of records specified in the Count attribute of your fetch statement.
  7. On the File menu, click Exit.
    image

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

А теперь по порядку — как стоит решать эту задачу:

Читать далее

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Создание вашего web-сайта, FAQ

Нужно ли Вам иметь свой веб-сайт?

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

Ну давайте разберемся по пунктам.

1. Веб-сайт это важная, неотъемлемая часть Вашей рекламной компании, вашего бизнеса.

Веб-сайт это прежде всего престиж, статус, лицо фирмы, доступное в любое время дня и ночи. Сам по себе веб-сайт вряд ли можно назвать рекламой, им нужно постоянно заниматься, обновлять материалы, заниматься его продвижением, чтобы в результатах поиска в Yandex или в Google выходить не на 2 странице, после всех Ваших конкурентов, а в первых трех, пяти, десяти результатах. Чем больше Ваша сфера, чем более популярны такие запросы, тем сложнее Вам будет попасть наверх и тем менее вероятно что на Ваш сайт начнут попадать толпы народа. Будут конечно посетители, но скорее всего они будут находить адрес сайта где-то на уличной рекламе, визитках или встречать ссылки на других сайтах, если у Вас есть что-то интересное.

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

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

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

3. Говорят реклама в интернет побуждает клиента выбрать продукцию прямо на сайте и совершить заказ через специальную форму и тут Вам все равно нужно будет для подтверждения заказа связаться с заказчиком и уточнить все вопросы.

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

Чем является сайт на самом деле?

1. Показателем статуса и уровня Вашей компании. Зачастую, даже найдя компанию в каком-нибудь справочнике аля 2gis хочется зайти на сайт и сразу выбрать или хотя бы понять если ли у Вас то что мне нужно. Если найдутся еще 2-3 фирмы с теми же услугами, то с большей вероятностью обратятся в ту, которая имеет сайт и дает о себе информацию.

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

3. Консультантом и продавцом Вашей продукции. Это возможно и реально, но есть факторы, влияющие на успешность такой задумки.

Когда нужно делать сайт?

1. У Вашей компании большие амбиции и возможности;
2. Вы считаете что у Вас достаточно контента (информации) чтобы дать пользователю интересный материал (фото, текст, видео и т.п.);
3. Вы уверенны что Ваша продукция востребована и желаете увеличить охват рынка, чтобы продавать еще больше;
4. Вы хотите познакомить потенциальных клиентов с совершенно новой продукцией, которую никто не видел;
5. Вы понимаете что просто сделать сайт недостаточно, нужны люди которые будет его обслуживать, продвигать, рекламировать, обновлять и добавлять информацию.

Рекомандации

Мои рекомендации просты, и скорее всего банальны.
1. Не пытайтесь сделать все сами. Вы же покупаете автомобиль в автосалоне и регулярно возите его на обслуживание. Если у Вас нет электричества, Вы не лезете в щиток, а вызываете электрика. Так и здесь, есть профессионалы своего дела, которые смогут оценить Вас, Вашу информацию и потребности и предложить нужное Вам решение. Когда Вы приходите с готовым «Нужно сделать вот так и так», расписанным на несколько страниц, то они могут и сделать то что Вы просите. А Вы уверенны что именно так правильно?

2. Перед тем как собраться идти к профессионалам соберите в кучу то что имеете. Поймите что Вы можете рассказать о специфике Вашего бизнеса, есть ли у Вас материал, хотя бы на страничку «О компании» или его должен будет написать кто-то. Если у Вам необходим интернет-каталог продукции, приготовте его, например, в Excell, или каком-то другом однородном виде. Вы не получите его на сайте пока не передадите разработчикам и чем однороднее и понятнее он будет выглядеть, тем быстрее Вы увидите результаты.

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

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

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Магия дат в CRM 2011, DateTime, UTC

Поначалу я нигде не встретил такой ремарки и не обращал на этот факт внимания, пока время тестирования решения не совпало с ранним утром.

Суть заключается в том, что, выбирая на форме в поле типа Дата и Время, например, 1 мая 2012, Вы рассчитываете, что в БД так и запишется: 1 мая 2012. Но все не так просто.

CRM хранит Дату и Время в UTC, таким образом, выходит, что, если Ваш сервер находится где-то за Уралом, то время в БД будет отличаться уже более чем на 6 часов с тем, что Вы указали. Так, у меня, к примеру, получалось, что если установить дату 1 мая, то в автосгенерированном через плагин договоре ставилось 30 апреля.

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

Если бы я сразу был внимателен, то MSDN прямым текстом говорит «Specifies the attribute value in UTC format.». Сам CRM так и будет показывать в веб-форме ту дату, что Вы выбрали, но если Вы работаете с датами через плагин, то не забывайте возвращать дату из UTC в ваш часовой пояс.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Mindfor WebMP 2.0, платформа для разработки Web-приложений

Платформа WebMP разрабатывается компанией Mindfor с 2009 г. С момента выхода ASP.NET MVC в компании было решено отказаться от продолжения разработки на обычном ASP.NET, и все дальнейшие веб-проекты реализовывались исключительно на MVC.

Автор и идеолог проекта, Александр Фомин, занимается разработкой на ASP.NET уже 10 лет, является Руководителем отдела разработки ПО компании Mindfor, а также членом Коллегии по информатизации и ИТ Общественного совета г. Тюмени.

Система управления сайтом Mindfor WebMP помогает веб-разработчикам, работающим на платформе ASP.NET MVC, создавать сайты и веб-приложения, сосредоточившись на важнейших задачах. В случае типового веб-сайта, будь это визитка, корпоративный сайт или интернет-магазин, — это привлекательный дизайн и качественная верстка. В случае веб-приложения — возможность создания любого нового функционала в стиле MVC с использованием готового функционала для удобного построения маршрутов, создания страниц, управления ролями пользователей и доступом, ведения логов, рассылки шаблонизированных электронных писем, типографирования текстов. Подобная гибкость достигается путем четкой декомпозиции системы и возможности использования необходимого разработчикам фукнционала — отключить или заменить можно все, вплоть до базы данных.

Для верстки используется модульная система semantic.gs.

Нововведения в версии 2.0:

  • NHibernate для доступа к данным — полноценный ORM;
  • поддержка модулей;
  • поддержка виджетов;
  • базовый шаблон для сайтов.

Интегрированные модули:

  • System – настройки, языки, медиа, логи, меню;
  • Routes – регистрация маршрутов;
  • Pages – загрузка текущих страниц, управление;
  • Widgets – загрузка виджетов, управление;
  • Users – текущий пользователь, управление пользователями;
  • Mail – шаблоны писем, отправка сообщений.

Базовый шаблон WebTemplate включает:

  • простую базовую верстку;
  • полный набор модулей;
  • Разделение less-файлов:
    — Site.less — общая разметка страниц;
    — Pager.less — пейджер;
    — Form.less — формы;
    — Text.less — оформление контента;
    — Admin.less — страницы админки.

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

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Обновления WordPress

Для тех кто разбирается не секрет что этот блог сделан на WordPress.

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

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

Зашел из под учетки администратора — 1 клик мышки и версия WordPress обновлена. И это не смотря на то что сделано все на банальном PHP. Несмотря на мое пренебрежение этим языком из-за обилия быдлокодеров, которые пишут не думая, дело не в языке вовсе.

Что обновилось:

Обновлены системы безопасности для 3 внешних библиотек, включенных в WordPress:

  1. Plupload (версия 1.5.4) — используется для загрузки информации.
  2. SWFUpload — ранее использовался для загрузки информации, и все еще может быть в необходим для при использовании плагинов.
  3. SWFObject — ранее использовался для внедрения флэш-контента, и все еще может быть необходим для использования некоторых плагинов и тем.

А так же исправлены:

  1. Ограниченния привилегий, где администратор сайта может отключить сетевые плагины при опредиленных обстоятельствах
  2. Межсайтовый скриптинг — уязвимость при создании кликабельного URL-адреса.
  3. Межсайтовый скриптинг — уязвимости перенаправления после размещения комментариев в старых браузерах, и при фильтрации URL-адресов.

Полный лог изменений здесь (на английском языке)

Измененный файлы:

wp-comments-post.php
wp-includes/version.php
wp-includes/js/swfobject.js
wp-includes/js/plupload/plupload.html4.js
wp-includes/js/plupload/plupload.silverlight.xap
wp-includes/js/plupload/plupload.html5.js
wp-includes/js/plupload/changelog.txt
wp-includes/js/plupload/plupload.silverlight.js
wp-includes/js/plupload/plupload.flash.js
wp-includes/js/plupload/handlers.dev.js
wp-includes/js/plupload/plupload.flash.swf
wp-includes/js/plupload/plupload.js
wp-includes/js/swfupload/swfupload.swf
wp-includes/wp-db.php
wp-includes/formatting.php
wp-includes/capabilities.php
wp-includes/kses.php
wp-includes/script-loader.php
wp-includes/ms-functions.php
readme.html
wp-admin/about.php
wp-admin/includes/update-core.php
wp-admin/plugins.php
wp-admin/press-this.php
wp-admin/setup-config.php

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Взгляд на автоматизацию бизнес-процессов

Ключевым элементом, влияющим на работоспособность предприятия, являются его бизнес-процессы. В зависимости от специфики бизнеса некоторые процессы имеют более высокий приоритет.

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

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

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

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

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Tweenk

Как гласит сообщение на главной странице tweenk.me

«I know there are a lot of people who want to play cool and serious MMORPG with large game world and interesting gameplay. But it takes a lot of time to level up your character, to run dungeons and kill monsters. Tweenk is a game where you can kill monsters, explore dungeons and meet your friends doing nothing for this.»

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

Ну… Это на самом деле не совсем правда. В чем же заключается подвох. А в том что для того чтобы в Tweenk произошли какие-то события нужно писать собщения в Twitter.

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

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

«Пришло время лениться», как гласит лозунг под игрой.

Лично я набил более 500 сообщений в Твиттер за 1.5 дня, причем уже 4 раза был забанен твиттером за превышение часового лимита сообщений. И вот пока я пишу этот пост я как раз ожидаю время выхода из бана моего твиттер Аккаунта, чтобы продолжить набивать ачивки за ПвП.

На данный момент я не встречал аналогов данной игры, а то что её разработчик Alex Shteinikov Тюменец и знаком мне еще со школьных времен радует еще больше.

Всем любителям пообщаться в твиттер рекомендуется.

Ну и всех кто решится поиграть приглашаю сразу в нашу гильдию. Пока что мы на первом месте практически по всем показателям: Mindfor

Из замеченных закономерностей:

1. Если Вы пишити реплай кому-то в Твиттер, то скорее всего он поможет Вам в бою. И это очень выгодно;

2. Если Вы включили редим ПвП в настройках Tweenk.me то Вы будете драться с людьми которым пишите или которые пишут Вам, а не помогать друг другу;

3. Чтобы папасть в подземелье нужно использовать какой-нибудь хэштаг;

4. Чтобы папасть на батлграунд нужно использовать хэштаг и не упоминать в сообщение никакого другого персонажа;

5. Вероятность убийства монстра зависит от длины Вашего сообщения.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Функциональный подход к разработке парсера на языке C#

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

УДК 004.9, 004.02

ФУНКЦИОНАЛЬНЫЙ ПОДХОД К РАЗРАБОТКЕ ПАРСЕРА НА ЯЗЫКЕ C#

Автор: Д.А. Пелевин, Тюменский Государственный Нефтегазовый Университет

Научный руководитель: к.ф-м.н А.О. Ярославов, группа ИТ-Компаний Арсенал+

По иерархии Хомского, грамматики делятся на 4 типа, каждый последующий является более ограниченным подмножеством предыдущего (но в тоже время легче поддающегося анализу, таблица 1).

Таблица 1 – Иерархия грамматик по Хомскому.

 

Грамматика

Язык

Необходимый и достаточный автомат

Тип-0

Неограниченная

Рекурсивно перечислимый

Рекурсивный

Машина Тьюринга

Решатель

Тип-1

Контекстная

Индексированная

Контекстные

Индексированные

Линейно-ограниченные

Встроенная магазинная

Тип-2

Контекстно-свободная

Детерминированная КС

Наблюдаемая магазинная

Контекстно-свободные

Детерминированные КС

Наблюдаемо магазинные

Не/детерминировано магазинный

Наблюдаемо магазинный

Тип-3

Регулярная

Регулярные

Конечный автомат

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

Проблема написания конечных автоматов была решена посредством создания специализированных программ генераторов синтаксических анализаторов (Yacc, Bizon, ANTLR и др.). В некоторых случаях требуется также наличие лексического анализатора, поэтому используются совместно с генераторами лексических анализаторов. Данные генераторы на входе получают грамматику, а на выходе выдают программный код-парсер, который потом компилируется.

Преимуществами описанных генераторов является использование языков описания грамматик (Lada, PEG, ppeg, Frisby и др.), использование быстрых автоматов. Недостатками же данных генераторов являются:

— сложность внесения изменений в генерируемый код;

— сложность управления оптимальной кодогенерацией;

— неприменимость при создании динамических парсеров.

Целью исследования является поиск удобных подходов к решению практических задач синтаксического анализа.

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

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

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

Особенностями функционального подхода является:

— отсутствие явно выраженной последовательности действий;

— отсутствие глобальных переменных, которые вы можете свободно менять в любой функции;

— отсутствие аргументов, передаваемых по ссылке;

— функция это не адрес на некий блок кода, а полноценный объект;

— функция может оперировать только своими аргументами и только в режиме чтения;

— функции не разрешается вызывать внутри себя какие-либо функции, которые могут изменить внешние объекты (массивы, классы, структуры, глобальные переменные, объекты ядра ОС);

— нет возможности напрямую использовать указатели и адресную арифметику.

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

В итоге, очевидно, что имеется ряд серьезных ограничений, однако в этом есть огромные преимущества. Главное преимущество в том, что функции при таких ограничениях превращаются в самодостаточные детерминированные сущности, которые не зависят от состояния внешней среды. Другими словами, нет такой вероятности и/или внешних и внутренних обстоятельств, чтобы для некоторой функции F, когда-либо изменилось истинность выражения F(A) == B, где A – некоторое конкретное значение аргумента; B – конкретное значение результата. Такое качество называют отсутствием побочных эффектов.

А это значит, можно свободно оперировать функциями:

— вызывать в любой последовательности (распараллеливание);

— кэшировать результаты вычислений (меморизация);

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

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

Комбинатор — это функция, принимающая в качестве аргументов другие функции и возвращающая функцию, которая является комбинацией аргументов по какому-то определённому правилу.

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

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

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

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

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

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

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

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Построение бизнеса в ИТ области. Особенности и мнения по реализации.

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

1. Количество

Как Вы считаете лучше начинать бизнес в одного или командой? Буквально несколько дней назад встретил блог в котором говорилось что непременно должен быть один основатель. Не могу согласится с этим утверждением по простой причине. Одному основателю будет во много раз сложнее выдержать старт, чем команде. С другой стороны команда-команде рознь и может и такая команда собраться что в ней ничего не получится решить и сделать.

Моя ставка – небольшая команда, способная приходить к общему решению, так действительно можно решать сложные вопросы и намного проще сущестовать в первое время, т.к. разногласия зачастую уберегают от глупостей и приносят к верным решениям. Чем ещё лучше команда нежели один человек? Ну скорее всего этот человек никону не предлагал совместно организовать бизнес, а значит он никону не доверяет из своих друзей, а их этого выводы уже может сделать каждый сам.

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

2. Место

Место географическое и место которое планируется занять на рынке – немаловажные факторы на мой взгляд. Если внимательно посмотреть на географию стартапов, то можно сделать вывод что успешными становятся стартапы в опредиленных географических регионах. С чем это связанно? Наверное с концентрацией бизнеса, с поддержкой государства… пока не берусь судить…

Что касается места занимаемого на рынке. Не могу припомнить у кого в заметки встречал такое описание (по моему это какой-то англоязычный автор), но в кратце сводилось оно к следующему. Малый бизнес по повидению часто похож на маленького ребенка на игровой площадке. Он немного сторонится мяча, а не пинает его когда он летит в его сторону. Это действительно имеет место быть, видимо у бизнеса как у маленького ребенка срабатывает какой-то инстинк самосохранения, избежания конкуренции, но в бизнесе избежать конкуренции можно только если у избегать хороший идей как класса, в противном случае конкуренция все равно будет, т.к. идее все время летают в воздухе и кто начнет их воплощение – вопрос к рандому. Искусственно занижать свои амбиции на мой взгляд бессмысленно, и это скорее инстинктивное явление, нежеле осознанное.

3. Бизнес идея

Идей много, много способов найти “свою”, много способов её реализовать, но как я писал раньше в своем ЖЖ на мой взгляд совершенно очевидно что хорошую идею бессмысленно искать в чужой хорошей реализации. Бессмысленно в данный момент пытаться переиграть Yandex, Google – они устоявшиеся лидеры в свой области, на то чтобы повторить их успех уйдет не меньше времени, чем у них на то чтобы выйти на новый уровень, а вот конкуренция у Вас будет намного выше.

Намного полезнее найти проблему, которую никто ещё не решил, которая лежит в головах людей, о которой они говорят. Чего они хотят но все ещё не имеют возможности получить. Сформулировать цель исходя из этого и идти к ней. Но в ИТ нельзя просто как на танке ехать к своей цели смяная все на своем пути, или наоборот тихо как разведчик подбираться, вполне возможно что пока Вы шли цель могла немного измениться. Лично я не вижу в этом никакой фатальности или ошибки, многие работающие сейчас бизнесы совсем не похожи на тот вариант в котором они зарождались. Самое главное это заметить когда изменится идея или появится новая, оценить её и не побоятся отказатся от первоначальной цели.

Как оценить? Самый простой вариант оценки проделанного пути – посмотреть сколько знаний, идей, результатов предыдущего пути Вы можете использовать в новом. Если все приходится начинать с нуля каждый раз – то, наверное, путь не верен, по крайней мере до текущего момента точно.

4. Программисты

Много Вы знаете реально хороших программистов? Лично я пожалуй готов пересчитать их на пальцах рук. Единственный плюс – если Вы сами являетесь хорошим программистом (как вы сделали этот вывод – это ваше дело, главное чтобы он был верен), то наверное скорее всего Вы сможете оценить потенциал и текущий навыки человека претендующего на роль хорошего программиста. Если же Вы управленец или менеджер (даже самый лучший)  Вы скорее всего не сможете сделать правильный выбор, есть вариант обратится к специалисту, но и его умение тоже нужно грамотно оценить. По этому на мой взгляд если Вы являетесь мего-топ-менеджером и хотите работать в ИТ-бизнесе, то рассматривая 1 и 4 пункт данной заметки нужно сделать соответствующий вывод.

На чем будут работать программисты. Язык, платформа, и т.п. на самом деле не имеет на мой взгляд особого значения… Оценки хорошо – плохо здесь не очень уместно. Все равно что положить на стол перед каким-нить слесарем кучу одинаковых инструментов разных фирм. Скорее всего он выберет тот, чью фирму он уже знает, но это никак не говорит что другие хуже, просто главное чтобы инструмент был удобен для него, а раз таким он уже работал, значит он к нему привык.

5. Запуск проектов

На своем опыте могу сказать что есть 2 проблемы.

а. Когда ОНО уже должно работать, а запуск все отклаывается, потому что нужно ещё тут лоск навести, там ещё блеска накинуть, здесь ещё подточить. В это время вполне можножно кто-то уже зарабатывает на схожей идее свое первое, а может и не первое состояние. Работы в области ИТ всегда кажутся законченными на 90-95% и редко – абсолютно законченными и в этом есть проблема.

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

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

6. Контакты с клиентом. Образ клиента.

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

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

Если же проект не ориентирован на конкретного клиента, то забывать про то что Вы делате продукт все таки для какой-то конечной группы пользователей, не стоит слишком много сил бросать на то чтобы сосредоточится на мысли “как заработать?”. Лучше создать то – что будет востребованно. Эта задача намного амбициознее и сложнее, когда будет решена она (а по моему мнению это должно было произойти в 3 пункте), тогда уже можно подумать как на этом заработать. Если Вы создали востребованный продукт – вы прошли большую часть пути к успеху.

К этому так же можно добавить что если ИТ компания создается программистами и все они будет заниматься разработкой кода – денежного эффекта от этого не будет. Никто не будет платить за то что кучка людей уткнувшись носом в мониторы своих компьютеров чеканит что-то на клавиатуре и периодически изображает неведомые смертным гримысса. Точно так же как никто не даст Вам денег если Вы просто придете и скажете мы придумали для Вас такую-то штуку, она Вам 100% понравится, только дайте нам сначала 2.5 млн чтобы мы её сделали. 🙂

Поэтому в совокупности нужно:

а. Общаться с клиентами и убеждать их.

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

в. Переходить от просто генерации идей к их воплощению.

7. Недостаток вложений

Как показывает практика – это наверное не менее важный фактор чем все остальные. Только в первую очередь нужно рассмотреть не финансовые вложения. Их при желании и усердии можно найти, а вложения своего времени, своего старания. Если заниматься разработкой своей лучшей идее только в свободное/послерабочетрудовое время, то скорее всего никто никогда и не увидит результатов такой разработки. К сожалению у меня на начальных этапах моего опыта в разработке накопилось достаточно таких неведомых чудес, которые действительно видимо никто уже не увидит потому что ни я, ни те с кем планировали их реализацию сейчас и не помышляют ими заниматься. Бывает иногда в порядке настольгии такое желание, но ощутимого эффекта, естественно, от одного желания не будет. Секрет успеха – максимальная интенсивность усилий всей команды, в противном случае, если Вы не готовы отказаться от другой работы или другой идеи, можете считать что эту Вы уже похоронили. А то что Вы будите таскать с собой “труп”, Вам ничего не даст.

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

Что касается расходов “в начале”, то мне кажется нужно придерживаться всего пары правил:

а. Не приглашать и не нанимать работника, если без него Вы можете обойтись.

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

Вот пожалуй основные 7 факторов которые я смог вынести для себя и которые значительно влияют на развитие ИТ-бизнеса.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.