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

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” – только подтверждает то, что написано выше.