среда, 9 марта 2016 г.

Swift - Нахождение повторяющихся слов в тексте

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

let string = "jyt vek zyt jik dax bif bof bak muk joc nut jix gyp dix lix zyp luf muf gap lot dup rac leq jyt box vax geh neh geq nek baf nyc zys moc ryc zop vex nyh jif rok joh lah zoq gih doq rat rix duh gih gah zef ref mip req box mih bik bip loh lyc mux bit neq nyk jyk lyp goc vit baf boh baq rek nyq vuc noh baf jot dyq dyh duc ryk lix dat lyq buk byt liq map moc vep vox zeh jec ryt gac bus jof muc nyx zoh lyx dof bap joq vox loq muq luc rup lac nec dys zap res myf zak bak vat duc meh dyc zos jup nuc mix zes bec ryx nyx rih goq jiq rut byq beq zys get ruh nic jux buf nuc muh mas dic gaf vos nif vox gas byf jyq moc lic nec rih zuq nas rih zoq mup jah vas bas lih dif zof jat dax byc vyp guk jeh mec gaq ruf dax dyp ziq gif deh dyh jyf guq loc luk zyt rak diq meq zyp viq bep nip vit dax dyc vuh byh lap net jiq zat nes nef jap daq los naq doq jas zix nyq vot dis dac vyq luh geh vyh mix mex vip luh joc vex rac dyc byh nek zyk roh gyh vuq jec lyf nop nof ryk byc gik jef mux deq gys ryf byk moq rih rih lyt nek lis vex buk lef rax bas myt zuh dep guf lah bok boq joc gyx nik moc ryh roq bik jec voq lax myx gas lix dep jot moq zek gat jah bep vyc gyt nox voq dax zih byc vec mux buq las jup zoh nef nek jus goh gak gyh end"

var text = string.componentsSeparatedByString(" ") //Разделяем наш текст на эллементы массива
var text2 = [String]()

var dict = [String: Int]()

for item in text {
    if let x = dict[item] {
        dict[item] = x + 1
    } else {
        dict[item] = 1
    }
}

for (keys, value) in dict {
    if value > 1 {
        text2.append(keys)
    }
}


print(text2.sort())

понедельник, 7 марта 2016 г.

Создаем простой Alert в Swift2.1

В этой статье я попробую подробно объяснить как создать простой alert в "яблочном языке" swift.

Для начала запускаем xcode и создаем новый проект.

Выбираем Single View Application ( это для того чтобы создавать наше приложение с нуля ).

Называем наше приложение ShowAlertMessage. Язык обязательно swift и снимаем галочку с Use Core Data ( грубо говоря, это хранилище каких-либо данных ), нам оно конечно же ни к чему.

Переходим на вкладку Main.storyboard. Там мы видим единственный ViewController, он полностью пустой, это и понятно.


Я не буду вдаваться в подробности размеров окна и других начинок, это интуитивно понятно в "Attributes Inspector". 

Ищем в "Object Library" нужную нам кнопку Button и перетаскиваем ее на ViewController.

Назовем ее "Touch me" и связываем с нашим ViewController.




Назовем ее простенько Button.

Теперь нам надо создать переменную showAlertMessage и задать ей нужные параметры.


Итак, что же тут написанно:

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

Дальше нашей кнопке надо добавить действие, addAction - оно придает нашему объекту какое-либо действие, а уже UIAlertAction - это функция, которая обработает определенное действие при касании пользователя кнопки. Тут мы видим handler, он нужен для того, чтобы вернуть что-то перед завершением. В нашем случае ставим nil.

Далее нам надо вызвать контроллер для отображение текущего контроллера и задаем параметры.

Запускаем наш симулятор.

Нажимаем на кнопочку и ву-ля-ля.





суббота, 27 февраля 2016 г.

Поиск по StackOverflow из командой строки

На GitHub опубликовали утилиту how2, которая даёт возможность удобно искать на StackOverflow прямо из командной строки. Получается нечто похожее на man, но с глобальным поиском по базе SO и возможностями составлять запросы на обычном (английском) языке.

Выглядит это вот так:



Установка

Установить утилиту можно через npm:

 npm install -g how2

Если появятся ошибки доступа, то загляните сюда. Или используйте команду:

sudo npm install -g how2

Если у вас нет npm, то установите Node.js:

sudo apt-get install nodejs npm

Использование

Если вы не указали обратное, то язык по умолчанию считается Bash. Утилита покажет вам наиболее вероятный ответ.


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


Можно использовать опцию -l lang, чтобы найти ответы по конкретному языку.



Как это работает?

Утилита how2 использует Google и StackOverflow API, потому что собственный поиск SO не так хорош.


Зачем это надо?

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


5 команд в терминале без которых нельзя обойтись

Сегодня я постараюсь рассказать вам об одной очень важной команде, которую должен знать каждый. Это команды cd – «change directory».

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


Вернуться назад

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


Вернуться домой

Вы можете мгновенно вернуться в ваш домашний каталог с помощью следующей команды:
cd
Это удобно, если вы заблудились по папкам слишком далеко и повторять «cd-» слишком неудобно.


Перейти к родительскому каталогу

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


Перейти в корневой каталог

Если вам вдруг стало необходимо попасть в самый верх иерархии файловой системы, используйте команду:
cd/


Временно изменить путь из домашней папки в другое место

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

CDPATH=/Path/To/New/Directory/Somewhere/Deep/
Не забудьте вернуть файл на место как закончите работу:
CDPATH = ~

Надеюсь эти команды немного облегчат работу с терминалом!

Как сделать снимок экрана в Mac OS

Поскольку на технике компании Apple нет кнопки PrintScreen, многим новичкам не понятно, как сделать снимок экрана в Mac OS X. На самом деле, делается это просто, причем есть даже несколько вариантов, не предусмотренных в Windows.

В Mac OS X предусмотрено несколько специальных сочетаний клавиш для сохранения снимка экрана или его части. Их несложно запомнить:

Сохранить снимок всего экрана на Рабочий стол

 

Сохранить снимок части экрана на Рабочий стол

 


Сохранить снимок текущего окна на Рабочий стол

 ...


Захватить снимок всего экрана в буфер обмена (аналог кнопки Print Screen в Windows)



Захватить снимок части экрана в буфер обмена




Сохранить снимок текущего окна в буфер обмена

 ...

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


Как поставить пробел в терминале

Как вы знаете, файлы и папки могут иметь пробелы в своих имена. Если вы введете что-то вроде:

cd Новая папка 

то Терминал любезно напишет вам, что объекта с именем «Новая» не существует. Он будет считать именем папки всё, что указано до первого пробела. Чтобы обойти это ограничение, есть два способа:

1) ввести название папки или файла с пробелом в имени в кавычки


cd ‘Новая папка’
2) перед пробелом поставить обратный слэш:


cd Новая\ папка

P.S. для того чтобы вернуться назад, достаточно написать cd -