Category Archives: All

Everything which does not pass to any of the other categories

Smart Hasher – hasher with many convenient features implemented on python

Smart Hasher is an Open Source command-line tool with many convenient features.

It is available on GitHub https://github.com/sergtk/smart_hasher

I have just completed the implementation of many features I wanted to have.

The story of this project

Before starting this project I needed to calculate a hash function for many large files to be confident that they are not corrupted. These files were in the cloud.

So I tried some Windows native tools, and found some non-native ones, and started to use them. Many of them support just MD5 hash which is now considered poor.
I would prefer the SHA-1. I also added support for some other popular hash algorithms, the full list follows: md5, sha1, sha224, sha256, sha384, sha512. All of them are supported by python out of the box by the library hashlib.

The following thing happened when I tried to calculate hash for files in the cloud. Some of the 4 Gb files were handled about 10-20 minutes, some are much longer. I could not realize what is going on. During the whole night the hash was calculated for several files only. Something similar happened in the next several days.
Sometimes tools calculated hash fastly, but not always. Speed was very unstable.
Moreover, other sites, like Youtube, were working fast. When I took my notebook to another network, everything was good with the calculation of the hashes. But again, it was difficult to understand the situation.

So I decided to write a tool to calculate the hashes. And I wanted to see progress easily and conveniently.
I didn’t found any of the hash calculation tools with such features. I could consider using some other tools for diagnostics of network speed but it was not clear what is faster: to use other tools or to write my own which allows me to change it as I want without any restrictions by feature set.

I implemented the tool with the feature to show speed for the whole current file and the last several seconds.
With this data, I already started to mail to cloud support and to call my ISP.
After all, I reached a guy from my ISP. It was quite easy to go through the call center “guards” with speed numbers. That sysadmin guy said to me that there is some strange bug in their software, that occurs on a large amount of data. So actually that guy just needed to close my session and everything worked fast again from my side.
To close the session without reaching the support he suggested me to shut down the Wi-Fi router for half an hour.
Strange story.

Another convenient feature for a large amount of data is to resume calculation after interruption.
This is implemented just by skipping calculation of the hashes for the files for which the hash is already calculated.

Another issue with existing tools is that sometimes a network connection is interrupted for a small period of time. So it is good to retry to read data from the file after a small pause. It is supported by Smart Hasher.

By default for every input data file, the one hash file is created as many other tools do. But it is not always convenient.
For example, if you have a lot of user files, it is not convenient to bloat the directory with a lot of hash files. So I implemented a feature to store all hashes in a single file. After some time, say a year, the hashes can be recalculated again. New and old files may be compared to find differences and to get an idea how user files are changed.
To simplify finding differences, file names are sorted in the hash file.
To find renames there is an option to sort the hash file by hash values because hashes for files are not changed if files are just renamed or moved.
These features are very convenient to check the integrity of our valuable data, e.g. photo archives.

To make it easy to parse file programmatically I also implemented saving data in JSON with python json library. But actually, this is more for practice with python, I didn’t use this feature yet.

There are other features that I didn’t describe here. You may find a description of them in file USAGE.md.

Continue reading

Errors on Apple app reviewer’s device during the app review when trying to connect to Azure SQL Server Db

Intro

I had issues with passing review for the app. The story below is described, probably a little bit messy, but anyway it may be helpful for somebody who experienced similar issues

Initially situation was described at Errors on Apple app reviewer’s device during the app review when trying to connect to Azure SQL Server Db. The copy follows.

Continue reading

Painless update of third party libraries

Introduction

Sometimes you need to recompile several or all third party libraries in the project you develop. This may happen if you need to switch to another compiler or upgrade version of existing ones.

If you have a lot of libraries in the project you will fix error by error. Third party interfaces are changed. But you can not test everything while you complete fixing all errors.

So it would be good to update piece by piece.

Approaches to achieve update with small pieces described below. Probably you will not find something tricky, but it is good to have small tricks collected in one place. This may be especially useful when you are stuck and bored. This article may help quickly refresh approaches which may be considered to go on.

Continue reading…

Installing Redmine and Ruby language. Fresh and poor experience

About 3 years ago I installed redmine (project management web application, written using the Ruby on Rails framework) and all Ruby-specific components that needed for it on Windows OS. I remember that I had a lot of issues with it. But I already forgot details from that time.

But now I need to install redmine again. I was expected that situation is changed and improved; 3 years is quite long period of time for software project. But it is appeared that I had again a lot of issues.

Among them: missing Ruby certificate, issues with handling spaces in the paths under Windows, selecting between gems mysql and mysql2 and finding version and platform of mysql2 which works with Windows, gem nokogiri can be built only as native component. I find video which helped me to obtain working rails and avoid pitfalls: How to install Ruby on Rails on Windows 7 – Part 4, Ruby on Rails.

Continue reading…

Text notes everywhere. Google Docs

Introduction

Since smartphones and tablets become more and more popular they frequently replace paper notebooks. It is also frequently happen than one person have several devices and it is very convenient to have all information available on all devices using synchronization via Internet.

There are a lot of services intended to solve this task. I will describe below criteria which I used to select service for my usage. I will also describe my experience of testing and using some of that services.

I will touch Google Docs, Apple Pages as a part of iWork for iCloud, Evernote, Simplenote, Microsoft Word Online as a part of Office Online .

Apple also provides Notes application with synchronization support for free. But I will not describe it here because it is very simple and lack a lot of basic features.

I will not consider in this article how powerful text editors in that services, because notes usually requires basic formatting functionality only , which are supported by all mentioned services. SimpleNote is the only service which works with plain text and allow to use Markdown formatting.

Despite described products may evolve and change fast the described features below can be used during the choice in the future even if product changed significantly. Article could be helpful for you even if you consider a service not mention in this post. It can be used as a list of criteria.

Continue reading…

Using Git with SVN repository – simple case howto and benefits

Introduction

If you use Apache Subversion repository you may want to use some benefits of Git source control managment system. But you may not have possibilities to switch from SVN repository to Git completely.

One of the large benefits of Git over Subversion is possibility to commit when you don’t have internet connection. Another one is availablility of commit history when there is no internet connection as well.

You may achieve mentioned benefits with Git-SVN functionality described at Git Book chapter “Git and Other Systems – Git and Subversion. There is also git svn man page available.

You will find below how to set up and use some Git benefits when you still continue to work with SVN centralized repository.

It is expected you have some basic knowledge about Subversion and Git before setting up communication between them.

Continue reading…

Двух-шаговые проверки при логине. А если потерялось? А если…?

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

Одним из первым, а может и самым первым, внедрил ее Google.

Основная идея в том, что вам нужно не только знать пароль к ученой записи, но и иметь еще что-то, например номер телефона или приложение, настроено специально для вашей учетной записи и только с ним можно залогиниться. Проще говоря: знать пароль и иметь устройство.

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

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

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

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

Читать дальше…

О ценах и скидках на SaaS-сервисы, приложения и тому подобное

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

Это, очевидно, применимо не только к приложениям, но в этом посте будет информация, ориентированная именно на интернет.

Итак, основная мысль следующая. Нужно создать представление о ценности продукта или смежного, поскольку потенциальному клиенту неизвестна реальная цена. Ее, собственно говоря и не существует. А потом показать скидку или более выгодное предложение, как кажется клиенту.

Читать дальше…

iOS7 с плоским дизайном – эволюционный шаг вперед

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

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

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

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

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

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

Итак.
Дело даже не в плоском интерфейсе, дело даже не в том, будет ли новый интерфейс успешен или нет. А в том, что начался уход от интерфейса, симулирующего объемные объекты.
А что нового покажет Apple еще предстоит увидеть.

Ссылки по теме:
1. “iOS 7” by Matt Gemmell
2. История скевоморфизма в продуктах Apple

Знакомство с андройдом как разработчика

Вступление

В связи с популярностью Андройда, захотелось мне попробовать что-то написать под него.
Знакомство состоялось.
До знакомство сложно было представить, что это ткое.
С одной стороны у меня по положительному шуму в интернете сложилось впечатление, что на Андройде классно приятно писать, что также явилось одной из причин, почему захотелось глянуть глубже.
С другой стороны, на данный момент знакомсто с Анрдойдом как пользователем закончилось, завершающая фаза освещена на странице “Not enough storage on android device” в вопросах, ответах и комментариях.

Знакомство

Приятно то, что в Android используется язык Java, и если есть опыт разработки с использованием Java, то все довольно просто.Google рекомендует использовать Eclipse, но я пробовал в IDEA, тем более есть приятный опыт разработки на Java именно в IDEA.

Во время экспериментов, в голове сидел iOS, с которым часто сравнивал. Поэтому буду часто упоминать и в посте.

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

Страницы с элементами управления делаются с использованием класса android.app.Activity (логика) и xml-разметки (визуальное представление). Но вся связь между ними пишется вручную.
В iOS к примеру связи делаются перетаскиванием мышью, при этом генерируются новые классы с членами, что дает возможность проверять несоответствие типов во время компиляции.
Видимо в Андройд тоже можно такой подход использовать, но это не является распространенной практикой, да и было бы более громоздко писать, поскольку нет аналогов XCode для iOS, который делает большую часть работы для разработчика.

Понравилось, как реализована совместимость. Если коротко, то есть так называемые Support libraries. И если нужно, чтобы приложение для более новой версии Анрдойда работало на более старой, то поставляется с библиотеками, которые похожи на кусок новой части Анрдойда, которой не хватает в более старой версии.

Для анимации нужно указывать названия переменных как строки, используется рефлексия – еще один источних ошибок.
В iOS видимо тоже используется рефлексия, но она скрыта от разработчика приложений.
Аналогичная ситуация в WPF от Microsoft (хотя это нельзя отнести к mobile development, но думаю, аналоги будут, а может и уже есть, на гаджетах от Microsoft) – для этого разработан механизм Dependency Property, в случае необходимости их создания в своей компоненте очень поможет помощь Visual Studio – опять натыкаемся на то, что среда разработки сильно помогает.

Для отображения списков данных используется класс ArrayAdapter.
Сначала было бы логично подумать, что он используется только для хранения данных. Но оказывается, что он также и связан с графическим представлением – нет четкого разделения на представления и данные. До конца не понял, как у них реализован MVC или его аналог, неочевидное разделение ответственностей. От Google-а ожидал чего-то более качественного.

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

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

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

Выводы

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

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

Думаю, будут компании, если они еще не появились, которые будут заниматься кастомизацией Андройда – приходит аналогия с различными коммерческими дистрибутивами Линукса.
А сам Гугл пока зарабатывает на том, что вендорам гаджетов продает свои приложения, хотя сам андройд и бесплатен.

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

ИТ меняет все … как чему приведет? понятия не имею…

Как меняют производительность интернет-технологии и что потом?
Начнем по порядку.
Машинистки уже не печатают целый лист, а только исправляют то, что нужно – одно измерение производительности имеем.
И собственно на этом Майкрософт и сумела заработать бОльшую часть своего состояния, обеспечив переход с печатных машинок на MS Office.
Идем дальше.
Что делает один программист с офисными сотрудниками?
Он медленно но уверенно заменяет их.
Раз написал софт – на всегда упразнил рабочее место.
Это еще одно измерение.
А что дальше? Творение программиста можно скопировать в другие офисы с той же деятельностью.
В одном офисе написал – во всех офисах убрал рабочие места.
Да, это утрировано, но я думаю суть понятна.
Для тех, кто говорит о высокой оплате труда программиста, не удосужив себя хоть немного разобраться, почему программистам выгодно платить большие зарплаты, думаю, ответ уже понятен – все дело в производительности и отдачи для фирмы. Да, это часто более рисковано, чем нанять человека, но оно того стоит.
Но…. Если это чисто офисная работа, то если раньше компания была видна, как правило, в своей местности, то теперь она видна во всем мире.
В теории да, на практике сложнее – ВЕД, языковой барьер, культура и т. д.
Но в целом конкуренция жестче и интернет стирает и границы, и многие компании….
В итого интернет стирает еще одно измерение.
Кстати, в банках сейчас к примеру комиссии при оплате счетов через интернет ниже, чем в кассах.
Касательно самой информации – самый яркий пример – это Википедия, которая содержит меньше ошибок, чем Britannica. И если раньше нужно было идти в библиотеку, то сейчас можно узнать то же, просто когда взбрело, например во время поездки в метро – это уже благодаря недавно появившимся мобильным устройствам. В Индии, к примеру, интернет доступен большему количеству людей, чем туалет.
Теперь сюда добавляем Open Source Software, которое опять таки стало возможным в полной мере только благодаря интернету и усовершенствованию средств разработки ПО – получаем автоматизацию новых отраслей еще быстрее, чем это было раньше. Софт можно назвать «живой информацией», динамической, можно пожинать только ее качество, а не изучать, как в той же Википедии.
Кстати, программирование очень быстро развивается именно благодаря тому, что в нем наиболее часто используются преимущества интернета.
Если выше были количественные изменения, что само по себе уже очень существенно, то дальше начинается самое интересное.
Начинаются вещи, которые раньше были просто не возможны.
Представим эксперта в некоторой области. Если ему удается вложить с помощью программиста хотя бы 10% своих знаний, то знания большинства середнячков в данной сфере уже не нужны.
А где нужен человек?
Вопрос в том, какой человек.
РОботы медленно, но уверенно развиваются, и все в какой-то момент все будет опять очень быстро меняться уже благодаря им.
И если вы приходите на работу и точно знаете, что и как будете делать, все стабильно и нет никакого риска, а значит творческой составляющий – то ваше рабочее место рано или поздно исчезнет, возможно не сразу, постепенно.
Например, авто без водителей, которыми уже давненько Гугл занимается.
Сдесь хочу вспомнить о 3D-печати. Что это? А по сути это создание единичных копий промышленными или близкими к ним технологиями. Это уже доступно практически каждому. Так что необходимость «ручной работы» тоже значительно уменьшается.
А вот то, что дальше, я абсолютно не понимаю, к чему приведет.
А это изменения в образовании – мне сложно представить, что произойдет, когда люди будут учиться скажем в 100 эффективнее – с текущей системой образования это более чем реально, тем более она чаще вредит, а не приносит пользу. Уже и так довольно много качественной информации касательно «настоящего» образования в интернете: по запросу «инфобизнес» можно очень много чего найти – далеко не все качественно, но при желании качествого очень много.
Но критической массы еще нет, все таки правительства сильнее со своей системой образования, чем пока еще малочисленное онлайн-образование.
Но это временно. Уже сейчас очевидно разделение на две группы людей.
Одни думают, что «кризис пройдет» – нет, не пройдет!
Вторые постоянно учатся – это органический процесс во время своей основной деятельности. И пропасть между первыми и вторыми растет.
А что будет, когда по вебконференции в той же школе будет читать лекцию лучший преподаватель страны? Куда денутся горе-преподаватели, которых более 90%? … я не знаю…
А кто-то подумает, а если программисты «все запрограммируют», тоже станут не нужны?
Нет, не станут. Это будет как спорт – у меня такая аналогия.
Если раньше компании-конкуренты можно сравнить с людьми, которые бежали на перегонки, то теперь они на автомобилях.
Понятно, что произойдет с теми, кто еще пешком?
А программисты где? А они являются теми, кто чинит авто, причем на ходу, потому что останавливаться нельзя.
Будет востребовано умственная работа и творчество.
А если уж работать на себя, то нужно искать что по душе и становиться лучшим – так сказать «нарезать ниши» – искать то, что сильно нравиться и становиться как можно лучшим. Больших успеход добиться не получится, если занимаешься не тем, что по душе, а значит в таком случае “вылетаешь с обоймы”.
P.S. Только закончил писать и попалась на глаза статья, очень в тему: America Has Hit “Peak Jobs” – только подтверждает то, что написано выше.

Софт, который я использовал на iPhone во время путешествия

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

Теперь по порядку.

Photos (стандартное приложение) – очевидно фотографии.

Camera (стандартное приложение) – очевидно создание фотографий и видео. На iPhone 4S очень даже ничего получается и видео, и фотографии. Отдельно возить фотоаппарат с объективом не хотелось. Мыльницы была, хоть и немного лучше качество, но в iPhone дополнительный плюс – это сохранение места, где создана фотография и время. Мыльницу так ни разу не доставал.

А с выходом iOS 6 еще появилась возможность создавать панорамы за несколько секунд. Здесь пример одной из них.

Calendar (стандартное приложение) – удобная штука, чтобы не забыть, что-то сделать. Хотя в поездке мало что нужно делать, но иногда нужно: точное время вылета, купить что-то, разные мелочи – позволяет освободить голову от лишних мыслей и наслаждаться путешествием. Особенно удобно, что поддерживается веб-интерфейс и синхронизация устройст и работа оффлайн. Создавал события в основном с Mac-book, читал уже на iPhone. После этого уже использовал и в коротких поездках.

Дополнительно также рассматривал календарь на возможность полностью на него перейти с Microsoft Outlook. На данный момент останавливают несколько вещей: не хватает Offline-клиента для Windows, а также категорий с возможностью выделения разными цветами. А уже хочется забыть про календарь, доступный только “дома”.

Clock (стандартное приложение) – здесь особых пояснений не требуется: часы и будильник. Плюс удобно также, что есть возможность вывести на одном экране время в разных точках Земли. При перелетах удобно.

Settings – чаще всего, это проверка наличия Wi-Fi.

Messages – на всякий случай. А также подтверждение при снятии денег с банкомата 🙂

Weather+ – погода. В отличии от стандартного приложения работает, без наличия интернета. Когда есть интернет, приложение кеширует прогноз погоды, потом его показывает. Также удобно, что можно добавить несколько городов сразу.

Mail (стандартное приложение) – ну, Mail 🙂

Maps (стандартное приложение) – Карты от Apple, которые пока еще глючные, но уже красивые 🙂 В целом не использовал, скорее пробовал. Тут также следует отметить, что те же Google Maps не очень хороши в поездках, в них частенько отображается некорректная информация. Они скорее хороши в больших населенных пунктах, но в данном случае нужно к ним относиться острожно.

Dict EN-RU Free – Бесплатный англо-русско-английский словарь, который работает оффлайн. Слов не очень много, но достаточно. Индонезийцы больше и не знают.
В следующий раз буду еще брать и словарь с местным языком. Как туристу достаточно и английского, но иногда было бы проще сказать индонезийской слово, ну и плюс с местными жителями было бы приятнее общаться 🙂

Light – использует вспышку как фонарик. Не припомню, чтобы активно использовал, возможно всего лишь несколько раз включал.

PDF Reader Lite – читалка PDF-файлов. Чаще всего использовал в аэропортах.
Недавно узнал об ограничении бесплатной версии: открывать максимум 10 разных файлов. После этого начал пробовать стандартный iBooks для чтения PDF. Сейчас не припомню, почему раньше не использовал iBooks – то ли не умел еще PDF-ы заливать, гыг, то ли PDF не поддерживался. Сейчас вообще через Dropbox заливаю файлы.

Currencies – Currency Converter – конвертер валют. Удобно что работает без интернета, при его наличии загружает обновленные курсы. Очень полезная штука, когда за короткий период времени сталкиваешься с гривнами, рублями, долларами, дирхами и рупиями…

Simplenote – приложение для заметок. Перешел на него после того, как надоели проблемы синхронизации в Evernote. Работает гораздо надежнее, но тоже не идеально.

Dropbox – начал использовать этот сервис за несколько часов до поездки, для резервной копии документов, но потом это приложение начало меня все больше и больше радовать – одно удовольствие ним пользоваться! До этого использовал Google Drive, и, в целом, видел, что он глючит. Но думал, это связано с тем, что я разные извраты делаю: компилирую сразу на Google Drive с временными файлами, что-то там переименовываю. Также Google всегда ценил за качественность технологически сложных задач, чего не скажешь у них про usability. Но когда я просто скопировал папку в Google Drive с компьютера, а на другом случайно заметил, что некоторые файлы не скопировались без какой-либо закономерности, то решил быстро искать альтернативу. Поскольку был наслышан о Dropbox, его и установил. Не могу нарадоваться, я себе уже и фото через него с iPhone загружаю, и PDF на iPhone, и многие другие мелочи, а предварительный просмотр документов еще и избавил от необходимости с бумагами в руках ходить, хотя конечно бумаги желательно имень на всякий случай.

(Если кто-то решит попробовать Dropbox, просьба использовать для регистрации следующую ссылку http://db.tt/y1sCGUCe – таким образом и вы и я получим по 500Мб дополнительного дискового пространства)

Хочу отметить также, что в последнее время Google Drive – не единственный сервис Google, от которого я отказался: перешел с Youtube на Vimeo из-за непонятных метаморфоз с качеством видео при его загрузке на Youtube, с Google Docs/Drive сперва на Evernote, потом на SimpleNote – в Google Docs не было возможности оффлайн редактирования заметок, возможно уже и есть, да и интерфейс оставляет желать лучшего, с Android на iPhone.
Мыслей вернуться назад не появлялось. Думаю, это еще не конец конец миграции с Google…

EveryTrail – интересное приложение в путешествии. Позволяет записывать передвижение с отметками на карте, использует Google Maps. Потом есть возможность просмотреть свой маршрут как слайдшоу с просмотром фотографий, заметками – интерактивно и приятно. Правда периодические его выключал, потому что GPS довольно быстро использует ресурсы питания…

Но не смотря на хорошую задумку, приложение использовать вероятнее всего больше не буду. Когда записывал маршруты длительность несколько часов, то все было ок. Но на длинном маршруте в этот раз начались глюки. При удалении фотографий или “ratake photo” уже в самом приложений что-то невнятное начало происходить при их просмотре – неправильное соответствие мест и фотографий, а позже еще заметил, что некоторые фото не были загружены в камеру, иногда удалялись не те фото (благо, такое не часто происходило), а также в некоторых фотографиях не сохранялись координаты, с которых делался снимок. Ну и в завершение ко всему мне так и не удалось выгрузить маршрут в интернет, а очень хотелось. Суппорт молчит. Надежнее выгружать фото в Picasa и просматривать карту с размещенными своими фото, хотя в данном случае, конечно, маршрут полностью проследить не получится.

Все что осталось – это картинка, вырезанная из скриншота:

Notes (стандартное приложение) – приложение для заметок. Поскольку и Simplenote, и Evernote глючат, то в поездке проводил испытания Notes. Иногда тоже проскакивали глюки, но потери данных не заметил, только дубликацию. Похоже, сделать 100% надежно при низком качестве связи – это сложная технологическая задача. В любом случае, при появлении тегов или категорий вероятнее всего перейду с Simplenote на Notes.

Phone (стандартное приложение) – чтобы не забыть, что iPhone – это, кроме прочего еще и телефон :). Для местной связи использовал другую железяку.

Safari (стандартное приложение) – веб-браузер, который меня устраивает. А еще недавно появилась функциональность сохранения веб-страниц с offline-доступом – в путешествии иногда довольно удобно.

Music – music)

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

UPDATE:
Нашел удобное приложение:
Budget. Много функций. 80% не используется. Но то, что можно использовать, работает стабильно и без сюрпризов.
Можно отослать транзакции по e-mail. А из e-mail сохранить в тот же Dropbox – это на тот, случай, если возникнет желание просмотреть данные в Excel и что-то с ними сделать.

Unit Converter – перевод между различными единицами длин, температур, веса и т.д.

Если есть, что добавить, буду рад прочитать в комментариях.

Первое iPhone приложение в ожидании review в AppStore

Отправил свое первое (пробное) приложение на review в AppStore.

Самые интересные запреты

В списке запретов замым интересным показалось следующие пункты:

  • Apps that duplicate apps already in the App Store may be rejected, particularly if there are many of them, such as fart, burp, flashlight, and Kama Sutra apps. (свистелки и перделки больше не принимаются 🙂 )
  • Apps that link to external mechanisms for purchases or subscriptions to be used in the app, such as a “buy” button that goes to a web site to purchase a digital book, will be rejected (все продажи только через Apple)
  • Any app that is defamatory, offensive, mean-spirited, or likely to place the targeted individual or group in harms way will be rejected. Professional political satirists and humorists are exempt from the ban on offensive or mean-spirited commentary (политики – козлы отпущения, хотя раньше банили такие приложения. Хорошая статья с 9-тью кейсами бана приложение доступна здесь.)
  • Apps portraying realistic images of people or animals being killed or maimed, shot, stabbed, tortured or injured will be rejected (“Лики смерти” не пропустят)
  • Apps that include games of Russian roulette will be rejected (Джодж Карлин видимо думает иначе :))
  • Apps containing pornographic material, defined by Webster’s Dictionary as “explicit descriptions or displays of sexual organs or activities intended to stimulate erotic rather than aesthetic or emotional feelings”, will be rejected (различают порнографию и творчество – приятно)
  • Apps that include the ability to make donations to recognized charitable organizations must be free

Полезные ссылки

Для меня полезными оказались следующие ссылки:

App store Approval Process (одна из родных страниц)
https://developer.apple.com/appstore/resources/approval/index.html

How to import a developer profile into Xcode?
http://forums.gamesalad.com/discussion/40223/how-to-import-a-developer-profile-into-xcode

How to upload an app to the App Store with XCode 4
http://www.touch-code-magazine.com/how-to-upload-an-app-to-the-app-store-with-xcode-4/

Prepare for App Submission
https://developer.apple.com/appstore/resources/submission/index.html

How to upload an app to the App Store with XCode 4
http://www.touch-code-magazine.com/how-to-upload-an-app-to-the-app-store-with-xcode-4/

Error: “No identities are available for signing” Xcode 4.3.1
http://stackoverflow.com/questions/9635939/error-no-identities-are-available-for-signing-xcode-4-3-1

Устанавливаем Git под Mac OS X / XCode

Когда начал писать под Mac OS X в XCode, то увидел, что в нем есть поддержка Git.
Решил его и использовать.

Знакомство с git

Если с Git-ом не сталкивались, то може быть полезным сайт git – fast-version-control (есть русский перевод).

Для тех, кто знаком с SVN, может быть полезной статья Git Svn Crash Course. Пользователям Subversion по началу Git может показаться слегка наркоманским 🙂

Поддержка Git в XCode 

Установить Git можно, начиная со страницы git-osx-installer


Если появилось желание существующий XCode проект посадить под Git, то могут быть полезными следующий ссылки:
1. Using Git with an existing XCode project
2. Setting up a git repository in XCode for a pre-existing project

Клиент с графическим интерфейсом можно найти на странице gitx.
Клиент очень удобный, но, похоже, уже 2 года не поддерживается.
Последний раз я скачивал его со страницы http://gitx.frim.nl.
OpenInGitX позволяет добавить кнопку в панель инструментов Finder-а, чтобы можно было открывать GitX, нажимая на нее, если вы находитесь в репозитории git.

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

Есть также еще один клиент с графическим интерфейсом gitk, но я его не использовал.

Далее используем в XCode c помощью команды File -> Source control -> Commit… и близ-лежащих.

Некоторые полезные операции

Git ignore file for Xcode projects describe at :

Checkout the revision you want to work with.
$ git reset --hard abcd93

More info: http://stackoverflow.com/a/890006/13441

To follow history after file renamed:
git log --follow
More info: http://stackoverflow.com/a/1321962/13441

Revert changes:
git checkout path/to/file/to/revert
git checkout -- .
More info: http://stackoverflow.com/a/52713/13441

Сommit all deleted files to Git
git add -u
This tells git to automatically stage tracked files – including deleting the previously tracked files.
More info: http://stackoverflow.com/a/1402793/13441

Find children revisions (commits)
git log -g
More info: http://www.kernel.org/pub/software/scm/git/docs/git-log.html

Rename project in XCode:
1. Rename project itself: http://stackoverflow.com/q/5416677/13441
2. Rename folder with sources with git to preserve history with git mv
3. Fix XCode project: http://stackoverflow.com/q/8262613/13441

Мобильный интернет – все меняется гораздо-гораздо сильнее, очередной виток спирали развития

Первый фактор – это то, что появляются новые пользователи, которые с обычным интернетом никогда бы не появились. В мобильном интернете расстояние одной кнопки в телефоне.Весело, что в Индии доступ к интернету есть у большего числа людей, чем доступ к туалету :)Не смотря на то, что сам мобильный интернет растет очень сильно, но внутри него все еще интереснее происходит.Люди на много чаще используют приложения, чем сидят в браузере, а если сидят в браузере, то не пользуются поисковиком. Это кстати тревожный звоночек для Гугла, видимо поэтому он так за Андройд взялся.

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

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

А тут еще и Apple c Facebook-ом обещают очень сильно интегрироваться в iOS6 – люди есть люди.

В итого получается что Apple, Facebook и Microsoft в определенном отношении партнеры.
… и при этом выпускают свои гаджеты…. Все это как то очень интересно выглядит.

Но самое интересное дальше. Учитываю огромный опыт все упомянутых выше монстров, а также то, что Facebook cверхгибкий и быстрый в разработке, что у него активно перенимает Гугл, что видно в Андройде, разработка софта изменяется кардинально.

Приходит конец интернет-браузерам. Точнее, они будут использоваться кардинально реже.
С точки зрения пользователей я уже описал почему так происходит.
А для разработчиков приходят полноценные платформы разработки, от Аппл и Гугл.
И писать под интернет богатый интерфейс пользователя, где основная логика клиента на JavaScript всегда было извращением. Да, что-то улучшали, но теперь приходят полноценные операционные системы и средства разработки.

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

Теперь установить приложение через AppStore становится элементарно.
А поскольку лучшие приложения будут пользоваться лучшим спросом и на платформе iOS или Андройд это сделать легче, чем под Web Browser-ы, то очевидно, кто на коне.

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

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

Apple, планшеты, телефоны

Из этого интервью Стива Джобса 2010 года очень много чего стало понятно о мобильных телефонах, планшетах, как все возникло, почему и куда движется интернет. А также многое из того, что сейчас происходит, например чрезвычайно агрессивное и очень необычное поведение Гугла относительно развития Андройда, да и не только его:
https://www.youtube.com/watch?v=2o4sd3oVQK8

Steve Jobs in 2010, at D8 Conference (Full Video)

Переход с Android на iPhone – первые впечатления

В целом опишу свои первые впечатления после перехода с Андройда на iPhone как обычного пользователя. Хотя, предполагаю, что многое описанное относится к iOS в целом, а не только iPhone. Но поскольку другими яблочными железяками я не пользовался, то все будет об iPhone.
Продвинутые пользователи Apple-продуктов в этом посте вряд ли найдут что-то новое для себя, но буду рад, если где-то меня исправят или дополнят.

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

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

Удобство использования

Если начать с Андройд, то как правило много опций, разных “непонятных” галочек, которые, как правило, либо не решают задачу, либо решают не ту задачу, хотя, впрочем преподносят и приятные неожиданности. Касательно iPhone – если нужная опция есть, то она где-то рядом. И ее в большинстве случаев искать не нужно, потому что она там, где ей и нужно быть. Если не нашел, то вероятнее всего ее и нет. Единственное, что искать нужно немного по новому, привыкнуть к идеологии – опции приложений вынесены и собраны отдельно от самих приложений. А также иногда интуитивные действия приводят к появлению элементов управления. Например, если в камере пытаться увеличить изображение в видоискателе, раздвигая 2 пальца на тачскрине, то сразу появляется ползунок, позволяющий изменить масштаб. Очень часто приложения приятно удивляют – как давно я такого не встречал. Заходишь, и что-то либо неожиданно красивое, либо удобное встречается. До сих пор прет как удаленные фотографии улетают в открывающуюся корзину 🙂
А вот редактировать текст не так удобно. Не понятно как перемещать курсор на одну позицию влево или вправо… Это я так думал уже при написании этого поста, решил все таки погуглить… Apple – гениальна!! Ответ нашел в iPhone 3G – Finger Tips Guide – Apple – Support http://manuals.info.apple.com/en_US/iPhone_Finger_Tips_Guide.pdf .Тыкаешь пальцем, а потом водишь ним. А сверху лупа показывает точную позицию курсора.
В Андройд приложения внешние приложения просто открываются и все – например если из Facebook переходишь по ссылке, то открывается отдельно браузер.
В iPhone идеология другая. Например если ты в Facebook-е перешел по ссылке, то браузер открывается внутри фейсбука. И если ты переключился с Facebook-а на другое приложение, то, вернувшись в него опять, откроется статья во вложенном браузере.
В целом мне показалось удобным так, как сделано в iPhone, но иногда бавает не удобно. Например открыл ссылку в Evernote, читаешь статью, а потом хочешь что отметить в том же Evernote – для этого приходится закрыть статью.

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

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

Неудобства

Основные неудобства, конечно, связаны с защитой от копирования и со всеми вытекающими последствиями. Я так, понял, залить что-то не телефон не проблема, а вот достать оттуда уже нельзя.
Но не понятно, почему, к примеру, с самого телефона нельзя удалить mp3-файл.
Единственное, что просто – это копирование фотографий с телефона – просто видно его как диск

Нет виджетов.

Нет FM-тюнера.

Если хочешь к примеру закачать нестандартный формат, то начинаются извращения. Если djvu-читалка предложила url ввести для скачки, то pdf-читался круче справилась – стала веб-сервером и я по wi-fi зааплодил в нее книгу.

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


С фотопотоком (сервис автоматического обмена фото со всех девайсов) как-то неочевидно – есть папки входящих, исходящих. А если разные девайсы, то мне что-то не очень ясно как оно что для чего входящим или исходящим является (видимо можно поднапрячься и понять, но я не хочу, хочу чтобы все было тупо, понятно и без вариантов)
Рингтоны для iPhone в формате m4r не более 30 секунд. На http://audiko.ru/ можно создать рингтон из выбранного фрагмента mp3-файла.

Переход

Заимпортить адресную книгу в vCards формате с Андройда сразу не получилось, пробовал это делать через iCloud. Но опять же, сразу сообщение об ошибке со ссылкой на страницу Аппле, где описаны все ограничения. Просмотрел файл – там почему то большие фото были в контактах. Заимпортил в Google Contacts, потом заэкспортил, все фото в контактах пропали, но все заимпортилось в iPhone уже без проблем

О некоторых приложениях и сервисах

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

А вот с поддержкой Flash что-то не в порядке. Как-то похоже на то, что Apple не особо стремится поддерживать Adobe: “How To Play Flash Videos On Your iPhone Or iPod Touch” (http://www.guidingtech.com/mobiles/how-to-play-flash-videos-on-your-iphone-or-ipod-touch/), Flash на iPhone\iPad – 3 способа

Хотя YouTube проигрывается без проблем.

Gmail клиент. Не нашел отдельный клиент от Гугла, к которому можно подключить несколько учетных записей сразу. Но родной почтовый клиент iPhone очень даже не плохо с этим справляется. Для тех, у кого нет фильтров входящих сообщение по метках, проблем нет, если же фильтры есть, то при получении письма и перемещении его в папку, не будет видно, что есть новая почта при входе в клиент, нужно зайти в саму папку.
Хотя от Гугла есть G-Whizz! и в нем почтовый клиент более менее, хотя и не такой удобный, как в Android. Но в придачу получаем еще куча приложений, которые не нужны, помимо гугловских сервисов там также есть свои Twitter, Facebook, MySpace.

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

Разные мелочи

Пока не очень привычно все делать через iTunes, а не так как раньше – берешь и просто копируешь файл.

AppStore есть даже в африканских странах и в Индии, но в Украине нет. Приходится пользоваться аккаунтом для России. Похоже, что какой-то геморой в связи с этим вылезет либо при желании купить приложение, либо при попытке программировать под iPhone и опять же необходимостью оплаты.

Почему ушел с Андройд

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

Последней каплей было – это нехватка места для новых приложений. С одной стороны места на карте памяти больше гигабайта, с другой, почему-то всем нужны 128 Мб памяти в телефоне. Думал, может это уже пофиксили. Перепрошивка под Андройд 2.3.3 не помогла, хотя в Android SDK там даже есть ключики, чтобы новые приложения уставливались на SD-карту – частично помогло.
Ну поскольку не мог терпеть невозможность загрузки приложений, то разлочил телефон, нашел софт для переноса на SD-карту. Вроде работает, но при перегрузке телефона некоторые приложения на SD-карте слетают.

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

На повестке эксперименты с программированием под iPhone.

Мысли об Apple и вокруг нее


1984 Apple’s First Macintosh Commercial

На волне последних событий наткнулся на книгу iКона о Стиве Джобсе, в которой закачивается повествование на волне успеха iPod.

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

А еще при чтение книги как-то все меньше хочется какой-то ерундой заниматься.

Я кажется начал понимать для чего нужны компьютеры и софт……

Единственное, что я не понял, почему на каждом углу о каком-то чуть ли не экстрасенсорном видении Стива говорят, причем на много много лет вперед.

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

Вот чему действительно стоит поучиться, так это напору, просто бульдозер все на своем пути сносит, если что-то мешает достичь цели.

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

И вот эта культура я думаю в Apple останется и после Стива.

Даже если сравнивать тот-же Google или Microsoft. Новую фичу довавили – старую поломали. Ну про Microsoft думаю смысла писать не нет.

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

А Стив требовал, чтобы задизайнили плеер так, чтобы за 3 клика найти песню можно было – и ничего лишнего. Полная ориентированность на пользователя.

Вот что Стив о дизайне говорил: «Дизайн – странное слово. Некоторые считают, что дизайн – это внешний вид продукта. Но, конечно же, если копнуть глубже, становится понятно, что дизайн – это то, как продукт работает. Для того, чтобы обеспечить действительно хороший дизайн продукта, необходимо понять этот продукт. Нужно по-настоящему разобраться [grok] в том, что он собой представляет». (Слово «grok», любимое компьютерными фанатами, придумал писатель-фантаст Роберт Хайнлайн; оно означает «досконально разобраться в каком-то объекте, проявляя симпатию к нему».)

Стив продолжал: «Нужно очень сильное желание, чтобы действительно глубоко разобраться в чем-то… Люди в большинстве своем не уделяют этому достаточно времени».

Я бы это назвал идеалом юзабилити.

И еще по поводу видения – вот что он точно видел, так это как применять технологии в других отраслях, особенно когда созрела потребность. Другими словами “быть в нужное время в нужном месте”.

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

Касательно людей.
Стив, как и Гейтс, только лучших нанимал. Вспоминая то, что Стив был наставником Цукерберга, теперь мне очень хорошо понятна агрессивность Марка в переманивании кадров из Гугла.

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

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

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

И все таки интересно, что задумал Стив, что пока еще не реализовано…

Не появляется ли iCloud для того, чтобы потеснить телевидение с помощью iPad и iPhone?

Ажиотаж вокруг функциональных языков

Сейчас часто можно услышать “функциональный язык”, “Scala”, “Хаскель”.

А что же случилось? Что за ажиотаж? Тот же Лисп появился в 1958 году. Но почему-то о нем особо ничего не слышно. Да, его где-то все таки используют, но почему-то императивные языки, такие как Java, C++ гораздо распространеннее.

Читая обзор по Scala, я увидел много многовведений, которые удобны, но……. большинство из них не являются привилегией функциональных языков, например встроенный XML, более продвинутые шаблоны (хотя в C++ такая продвинутость уже давно есть без функционального программирования) и т.д.

Замыкания более лаконичны, чем в Java – хотя не возмусь судить, действительно ли это стало возможным благодаря тому, что Scala – функциональный язык.

Единственное, что для меня кажется очевидным преймуществом – это отсутствие side effects, что при многопоточном программировании потенциально имеет преимущества.

Я соглашусь, что на Scala можно писать более элегантный код, чем на Java.

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

А с логическими уже интересная история произошла. Еще в году 2002 академик Редько Володимир Никифорович на парах рассказывал эксперимент который проводили японцы. Они, поняв всю мощь (с теоретической точки зрения) логических языков решили кругом применять Prolog… и вся это затея успешно провалилась, что для академика было очевидным еще до начала эксперимента.
А почему? А ответ банальный: люди думают императивно, а не логически… и не функционально.

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

Все точки над “I”, конечно, расставит время.

Шпаргалка для PHP: FALSE, NULL и значения, с ними связанные

Оригинал статьи: https://habr.com/ru/post/113253/


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

Continue reading

Сюрпризы при 3d-печати

Оригинал статьи: https://habr.com/ru/company/materialise/blog/99314/

Блог компании Materialise

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

Continue reading

О головоломках и собеседованиях

Выложил пост с головоломкой, как попалась книга о них в посте.

Книги вот такая:

Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов

Уильям Паундстоун

Вот такая аннотация:
“Методику интервьюирования при приеме на работу в корпорацию Microsoft, основанную на решении задач и головоломок, теперь перенимают многие компании, которые хотят выявить наиболее творческих кандидатов среди просто способных. В книге «Как сдвинуть гору Фудзи?» излагается эта методика и предлагается более тридцати трудных задач и головоломок. Книга показывает, как при помощи эффективного творческого и аналитического
мышления можно отыскать ответы на самые нестандартные вопросы.”

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

Мне интересна книга тем, что я не понимал, как можно по головоломке что-то определить, но потом практика показала, что это работает и очень хорошо.

Хотя есть и негативные стороны: интервьюер сам должен уметь решать головоломки и собеседование не получается проводить “на автомате”, поскольку кандидат может предложить другое решение и нужно в него въехать.

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

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

Книгу не читал, но вероятнее всего, почерпнул бы очень много полезного.
Скачать ее можно здесь http_www.klex.ru/books/superlearning/kak_sdvinut_goru_fudzi.zip

Ну и ответ к задаче о Колпаках из поста “Задача о Колпаках”:

Первый мегамозг предполагает, что остаток от деления на 100 суммы всех чисел на всех 100-а шапках равна 1, второй – 2, … 99 – 99, 100 – 0.

Один из мегамозгов сделает правильное предположение.

А по остатку и 99-и числам уже легко вычислить неизвестное, сотое, число, которое написано на своей шапке.