Тесты на время

Хуже чем проверка знаний на время может быть разве что выдача тестов с неправильными ответами 🙂

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

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

Не делайте так!

P.S. Я обычно отказываюсь от прохождения такого, но настойчиво попросили… Результат — половина ответов «в молоко» 🙂

Задачки из Тестовых Заданий

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

Любимая задачка: перевернуть строку, по символьно, задом на перед.

Я понимаю зачем это надо уметь делать на С/C++ без дополнительного выделения памяти когда каждый байт на счету…
Но на собеседовании по JavaScript? Это ж интерпретируемый (иногда не однозначно) язык, где мегабайты памяти утекают по мелочи!

Ну ок, сел и на бумажке написал примерно вот такое. Выпендрился, fat arrow function заюзал 🙂

const reverseStringByHalfLoop = (value) => {
	const length = value.length; 
	const halfLength = Math.floor(length / 2);

	let result = value.split('');
	for (let i = 0; i < halfLength; i++) {
		const char = result[i];
		result[i] = result[(length - 1) - i];
		result[(length - 1) - i] = char;
	}
	return result.join('');	
}

Этот код поставил в тупик интервьювера! Он даже начал проверять что будет если длинна строки нечетная…

Отвечаю: ничего не будет, средний символ сразу стоит на своем месте 🙂

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

Оказалось от меня ожидали JavaScript style ответа. Я потом загуглил, типа вот такого:

function reverseStringByArray(value) {
	return value.split('').reverse().join('');
}

Ладно, проехали…

Вот вам еще вопрос (точнее связка) который уже 2 раза встречал:

  1. Напишите функцию которая суммирует все переданые в неё аргументы (прикол в том что кол-во аргументов может быть любым)
  2. Передайте в написаную вами выше функцию массив как список параметров (подколка на знание spread синтакстиса)

В общем очередная шизиловка 🙂 Если что, это делается это как-то так:


export const sumOfAllArgs = (...args) => {
	return [...args].reduce((a, b) => a + b, 0);
}

let arr = [1,2,3,4,5];
sumOfAllArgs(...arr);

Но я так и не понял зачем 2 вопроса об одном и том же? Скорее всего этим вопросам тоже 100 лет в обед, а раньше, до ES6 синтаксиса, решалось через proptypes или еще какую-то олдскульной JavaScript Magic.

В общем технические интервью это иногдза забавно. Но качество специалистов удручает… Все знают SOLID и меряются кол-вом патернов, а вот чужой код и best practices уже никто не изучает.

P.S. Да, я на старости подрабатываю программистом. Это прикольно, не дает мозгам засохнуть, ну и 30+ баксов в час это таки деньги 🙂

Английский перевод книги опубликовал

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

P.S. Надо бы конечно вычитать нетивами, но то уже в следующей жизни…

Отвечу на любой вопрос. Скидка 100% :)

Ну точнее почти на любой вопрос, я ж не все знаю и не все можно публично рассказывать…

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

P.S. Да, это за одно и «перекличка» читающих этот блог 🙂

Про Hardware проекты из Украины

Навеяно повальным увлечением hardware-поделками ака «стартап для Kickstarter» ©

Напоминаю что $1 тому кто придумал, $10 тому кто сделал, $100 тому кто продал. Но учтите, что продажа обязательна! Иначе никто ничего не получит 🙂

Но отсюда следует и другое: если на изготовление/производство ушло 10х то заработать больше 100х проблематично…

В общем, изучайте чужой опыт и учитесь на их ошибках!

Смотреть раз:

Смотреть два:

Смотреть три:

Можно еще это посмотреть:

Будут вопросы — пишите в каментах. Я устал по 20 раз рассказывать и убеждать что главное дойти до магазинов, а не «сделать из гавна пулю» ©

Ходить на работу

Ходить на работу — это привычное занятие для большинства современного населения. Но я ж с 1999 года работал только на себя…

Так сложилось, что с марта по август 2014 года я тоже побывал в шкуре офисного работника. Причины такого эксперимента: офигивание от событий в Украине и интересный проект.

В общем, не важно, что я там наработал, важно что я понял за последние полгода:

  • Ходить на работу каждый день — возможно.
  • От зарплаты до зарплаты живут все сотрудники, независимо от ее размера. Соответственно отложить денег — практически не получается.
  • Регулярное посещение рабочего места позволяет не думать о проблемах в стране или своем будущем. Да и вообще позволяет не думать ни о чем! Ну кроме рабочих задач 🙂

Что я буду делать дальше? А вот тут опять начинается офигивание от войны в стране, остутствие перспектив для себя и детей. Ну и тупое отсутствие бабла… Может действительно не париццо и ходить на работу? 🙂

P.S. Присылайте предложения, ну или отговорите.

Сертификаты, провижены и прочие грабли iOS разработки

Для начала давайте определимся

Провижен это такой файл, который закгужается с девелоерского сайта Apple и добавляется в среду разработки XCode

Девелоперский провижен — файл для определённого пекиджа com.company.SomeName или набора пекиджей com.company.* чтобы можно было компилировать, запускать и отлаживать прямо из XCode проект com.company.SomeName

Дистрибьюшен провижен — файл для определённого пекиджа com.company.SomeName или набора пекиджей com.company.* чтобы можно было отгружать публичный билд (Archive в .ipa файл или прямо в АпСтор).
Кстати, на дистрибьюшен провижине невозможно запустить или отлаживать продукт прямо в XCode. Надо дев и дистриб провижены переключать постоянно, или разрабатывать и отгружать на разных машинах! 😦

Кроме провиженов есть понятие персональный сертификат или айдентити которые добавляются в системный KeyChain.

Девелоперский Сертификат — сертификат только для зарегистрированных в Apple Developer людей (с Apple ID) для разработки и запуска на дивайсах из XCode. Притом для того чтобы человек может быть любым, даже не привязанным к комапнии выдавшей Девелоперский провижен, но лучше так не делать 🙂

Айдентити для дистрибьюции — это такой же девелоперский сертификат, но выданный на человека который является членом команды (указан в Control Panel Apple). Без такой айдентити невозможно собрать билд для Дистрибьюшен провижена!

Так что же надо и когда?

Чтобы отлаживать и разрабатывать (но без Store и InAppPurchase) прямо из XCode, для пекиджа com.aaa.bbb достаточно:

  1. Девелоперский Провижин для com.aaa.bbb
  2. Дивайс присутвует в файле этого Дев. Провижена для com.aaa.bbb
  3. Подойдет любой Девелоперский Сертификат

Чтобы компилить, отлаживать и получать InAppPurchase и прочие Store вещи прямо из XCode, для пекиджа com.aaa.bbb нужно:

  1. Девелоперский Провижен для com.aaa.bbb
  2. Дивайс присутвует в файле Девелопер Провижена com.aaa.bbb
  3. Девелоперский Сертификат выданный на сотрудника компании!

Чтобы отгрузить билд com.aaa.bbbb для AppStore нужны:

  1. Дистрибьюшен провижен для com.aaa.bbb
  2. Айдентити зарегистриррованного Apple Developer сотрудника компании.

Apple такой Яббл © #ЖизньБоль