среда, 29 августа 2012 г.

Впечатления Гит.

Урок 2

Глава git reset HEAD

Факингшит. Я внесла изменения в README.md, нашла как их закоммитить. Закоммитила. Потом набрала его команду - $ git add README - и тут до меня дошло, что, вероятно, там не хватает git add README.md. Да-а... А я с этим потеряла кучу времени, но хорошо хоть нашла, где собака порылась))

Глава Commit

Тут предлагается откоммитить изменения, внесенные перед этим. "У нас уже есть кое-что staged и готовое и самое время откоммитить это.

Делаем:


git commit -m “brief description of commit”

Но тут пропущено звено. Когда я пыталась это сделать в терминале, оно выдавало тот же результат, что и команда git status.

Там предлагалось выбрать:


#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)

И я сделала правильный выбор. Я прописала в терминале первое.
Дальше в обучалке все идет по порядку :)


a quick git pull first, then you can carry on as normal.  Easy when you know how..

Короче, нифига не получается.
1. Постоянно пропадает 





вторник, 28 августа 2012 г.

Вопросы по Гиту. .rsa расшифровка.


Урок 1.

$ ssh-keygen -C "username@email.com" -t rsa

-С - stands for 'create'
-t rsa? Шо цэ. И где вообще можно посмотреть все эти расшифровки. + пройти сначала по ссылям, которые он дал. Вроде что-то похожее было))

rsa нашла. Это расшифровывается как Rivest-Shamir-Adleman. Алгоритм, при котором происходит асимметричное шифрование с использованием перемножения двух случайно выбранных простых чисел.

-t, думаю, можно посмотреть в help'e, но это надо будет попозже))

With -t <branch> option, instead of the default glob refspec for the remote to track all branches under the refs/remotes/<name>/ namespace, a refspec to track only <branch> is created. You can give more than one -t <branch> to track multiple branches without grabbing all branches.

Ответ взят отсюда

------

Урок 2.

Глава git reset HEAD

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

- в строке $ git add README, похоже, не хватает .md - должно быть так: $ git add README.md

Глава Commit

To check which files have been committed to the local repo, type

- $ git ls-files - что такое ls? Может, local settings? L - скорее всего local, а вот s - шо такое))

----
мессага преподавателю.
Feel myself very stupid, but I'm stuck in this lesson.
Everything go allright, untill "$ git push -u origin master"
I've read the stuff of your link, but "git pull origin master" doesn't help me.

I made "git status". It shows me: Unmerged paths: (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both added:         README.md
#
no changes added to commit (use "git add" and/or "git commit -a").

So, I tried "$ git rm README.md."

The terminal answers: "README.md: needs merge"

rm 'README.md'

I've merged it, but it doesn't help.

And git status says that "On branch master
nothing to commit (working directory clean)"
I'm confused.

















ex12.rb


git

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


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

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

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

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

Что такое Гит?

Гит - опн сорс система контроля версий, которая была спроектирована для поддержки очень больших проектов с нормальной скоростью и эффективностью, но также подходит и для маленьких персональных репозиториев (сборник источников, к которые могут быть доступны для получения информации); он особенно популярен в опен сорс комьюнити, обслуживая разработческие платформы для проектов, такие как inux Kernel, Ruby on Rails, WINE or X.org.

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

----
Урок 2.

git revert - возврат.



git revert используется для записи некоторых новых коммитов, чтобы возвратить эффект некоторых ранних коммитов (обычно только ошибочных).

Например:


git revert HEAD~3

Возвратить изменения до 4-го последнего коммита в HEAD и создать новый коммит с возвращенным значением. (Revert the changes specified by the fourth last commit in HEAD and create a new commit with the reverted changes).

git revert -n master~5..master~2 

Возвратить изменения, сделанные коммитами с 5 последнего коммита в мастере (включительно) по третий последний коммит в мастере (включительно), но не создавать никакого коммита с возвращенными значениями. Возвращение только модифицирует рабочее дерево и индекс. (Я так понимаю, то, что не надо делать коммит с возвращенным значением - об этом свидетельствует значок -n - т.е. no или not).  














среда, 22 августа 2012 г.

Why 3

Давайте изменим направление. Для нас в переменной сохранено стихотворение.


print poem
=> "My toast has flown from my hand
And my toast has gone to the moon.
But when I saw it on television,
Planting our flag on Halley's comet,
More still did I want to eat it."


Вместо  "toast" можно поставить "melon" или что угодно. Давайте попробуем:


poem['toas­t'] = 'hone­ydew'
=> "honeydew"


Теперь надо вывести на экран, чтобы увидеть новое стихотворение.


print poem
=> "My honeydew has flown from my hand
And my toast has gone to the moon.
But when I saw it on television,
Planting our flag on Halley's comet,
More still did I want to eat it."


Заметили, что изменилось только первое упоминание "toast"?

Квадратные скобочки, которые мы только что использовали довольно часто встречаются в Ruby. Помните, мы набирали:
poem['toast'] = 'honeydew' У того бокса со словом "toast" квадратные скобочки с каждой стороны, видите?
Две скобочки вычерчивают цель. Точно. Эти скобочки говорят: "Я ищу ...". Готово, цель. Здесь мы ищем toast и заменяем его фруктом.
Вот вопрос: "Что будет, когда мы применим .reverse ко всему стихотворению?


poem.rever­se
=> ".ti tae ot tnaw I did llits eroM
,temoc s'yellaH no galf ruo gnitnalP
,noisivelet no ti was I nehw tuB
.noom eht ot enog sah tsaot ym dnA
dnah ym morf nwolf sah wedyenoh yM"


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

Это делается вот так:


poem.lines­.to_a.reve­rse
=> ["More still did I want to eat it.
", "Planting our flag on Halley's comet,
", "But when I saw it on television,
", "And my honeydew has gone to the moon.
", "My honeydew has flown from my hand
"]


   Итак, что мы видим? Что произошло? Мы напечатали poem.lines.to_a.reverse и что произошло?
   А произошли две вещи. Мы превратили poem в список, использовав lines.to_alines - определяет каким именно образом надо разбить строку, а затем to_a конвертирует в массив.
   На месте lines могут быть использованы такие методы, как bytes или chars. Когда мы используем lines, Ruby возвращает каждую строку в стихотворении.
   Затем мы переворачиваем этот список. У нас есть каждая строка по отдельности. Мы ее перевернули. Вот и все.
   Давайте рассмотрим здесь еще один метод:


print poem.­lines.to_a­.reverse.j­oin
More still did I want to eat it.
Planting our flag on Halley's comet,
But when I saw it on television,
And my honeydew has gone to the moon.
My honeydew has flown from my hand


Вывод №3.

   Отлично! Метод join взял этот список перевернутых строчек и вывел их вместе в строку. (Конечно, мы могли просто использовать to_s).
Анализ времени.
   Восклицательные знаки. Методы могут иметь восклицательные знаки (а также и вопросительные) в своем названии. Не вопрос. Попробуйте:


poem.inclu­de? "my hand"­
=> true


   Квадратные скобки. Определяют цель и находят вещи. Находят и заменяют.
   Цепные (связывающие) методы помогают нам сделать побольше пертурбаций. Разбить стихотворение, перевернуть его, снова собрать.

poem.lines.to_a.reverse.join

Здесь вы наверное еще немного хотите поиграть со стихотворением. Полный список всех строковых методов здесь. Пойдите и попробуйте несколько. Например, poem.downcase или poem.delete.)

Наберите books = {}


books = {}
=> {}

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

:splendid --> a masterpiece.    роскошный --> шедевр.
:quite_good --> enjoyed, sure, yes.    неплохо --> понравилось, конечно, да.
:mediocre --> equal parts great and terrible.    посредственный --> поровну великих и ужасных.
:quite_not_good --> notably bad.    достаточно плохо --> в основном плохо.
:abysmal --> steaming wreck.    чрезвычайный --> полная фигня(?).

ыва

вторник, 21 августа 2012 г.

Why 1, 2

.reverse - наоборот.


"Helen".re­verse
=> "neleH"


.length - сколько символов.


"Helen".le­ngth
=> 5

Например, используется, когда заходишь на сайт, регишься, а тебе кричат: "Эй, у тебя пароль слишком короткий"))

* 5 - любое число.


"Helen" * 5
=> "HelenHelenHelenHelenHelen"

Выводы №1:

Давайте посмотрим, что мы выучили за первую минуту.
The prompt. Печатая код в prompt дается ответ из него. Весь код дает ответ.
Numbers and strings - это математические и текстовые объекты.
Methods. Мы использовали англоязычные методы, такие, как reverse и символические методы, как * (метод умножения). Методы - это действия!

Это эссенция нашего обучения. Брать простые вещи, играть ими и превращать их в другие вещи. Вам комфортно. Уверен, что да.
Ок, давайте сделаем что-нибудь дискомфортное. Попробуйте перевернуть число: 40.reverse.


40.reverse­
=> #<NoMethodError: undefined method `reverse' for 40:Fixnum>


Мы не можем перевернуть число 40. Ну, если, конечно, не держать монитор возле зеркала. Но переворачивание числа не имеет значения. Ruby выдаст сообщение об ошибке.
Ruby говорит, что не существует метод reverse для чисел.
Разве если превратить сначала в строку.


40.to_s.re­verse
=> "04"


Мальчики отличаются от девочек. И числа отличаются от строк. Т.к. мы можем применять методы к любому объекту в Ruby, некоторые методы работают только с определенными типами вещей. Но всегда можно обратиться к конвертации между различными типами, используя Ruby-методы "to".

to_s переводит в строку - to string
to_i переводит в числа - to integer
to_a переводит в массивы - to array

Что такое массивы? Это списки, напечатанные внутри квадратных скобок [].

Список содержит вещи в определенном порядке. Как в очереди за попкорном.


[12, 47, 35]
=> [12, 47, 35]


А вот один поднимает руку!


[12, 47, 35].m­ax
=> 47


Хорошо, хорошо. Но раздражает постоянно перепечатывать этот список, да?
Давайте сохраним его внутри ticket , как например:


ticket = [12, 47, 35]
=> [12, 47, 35]


и теперь по команде "ticket", выйдет этот же массив. Т.о. мы создали переменную.
А теперь давайте упорядочим наши номера.


ticket.sor­t!
=> [12, 35, 47]


Выводы №2:

У нас был список. Мы упорядочили его. Переменная ticket сейчас изменилась.
Вы заметили, что у метода в конце большой яркий восклицательный знак? Очень часто методы в Ruby кричат таким образом, если они изменяют составляющую переменной в лучшую сторону. В этом нет ничего особенного, просто пометка.
Теперь давайте посмотрим, как прошла наша вторая минута:

Ошибки: Если мы хотим перевернуть число или сделать что-нибудь подозрительное, Ruby пропустит строку и скажет, что ему что-то не нравится.

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

Переменные сохраняют вещи и дают им имена. Для этого используется знак "=". Как ticket = [14, 37, 18].

понедельник, 13 августа 2012 г.

Классы.


Прога:


class Greetings
def hi
print "Hi, user"
end
end
obj = Greetings.new
obj.hi


Вывод:

Hi, user

1. Создаем класс Greetings.
2. Пишем функцию(?) def hi, в которой выводится "Hi, user".
3. Сначала закрываем функцию, потом закрываем класс end'ами.
4. Создаем переменную (?). new - не знаю, шо это. Получается, что эта переменная - класс Greetings.new - класс приветствие.новый.
5. Выводим эту переменную с функцией hi.
Факинг шит, еще учить и учить. Нифига не знаю, как это объяснить, но закономерности вижу))

Прога:



class IPv6
def name
"IPv6"
end
def size
"128 bits"
end
def example
"2001:470::1"
end
end
ipv6 = IPv6.new
print ipv6.name, " is ", ipv6.size," long and here's an example ", ipv6.example


Вывод:

IPv6 is 128 bits long and here's an example 2001:470::1

1. Создаем класс IPv6
2. В нем создаем функции(?) - 3 шт.
3. Создаем переменную ipv6 = IPv6.new. Я так поняла, .new пишется для того, чтобы потом можно было обращаться к ней. Отэто объяснила. Сама ж потом ничего не пойму)
4. Выводим функции по одной в строчке.

Прога:



class Employee
attr_accessor :name, :age, :gender
end
e = Employee.new
e.name="John Doe"
e.age=18
e.gender="male"
print "New employee: #{e.name}, #{e.age}, #{e.gender}"


Вывод:

New employee: John Doe, 18, male

1. Создаем класс Employee.
2. В нем задаем точки доступа: имя, возраст, пол.
3. Создаем переменную e = Employee.new. Ну, шоб над ней можно было проводить дейтсвия.
4. Пишем, что к какой точке доступа относится. Эммм...ну, тоже, в общем, задаем переменные.
5. Выводим строку с переменными на экран.


Прога:



begin
obj.greeting
rescue
print "Object or method does not exist"
end


Вывод:

Object or method does not exist

1. Создаем объект "приветствие".
2. Чезахрень? Спасаем.
3. Выводим "Object or method does not exist". Ниче не понимаю)

Прога:


begin
raise 'Raise Exception Handling'
rescue Exception => e
print e.message
end


Вывод:

Raise Exception Handling

1. Создаем. Эээ. Че создаем-то? Класс? Пишем подняться строке.
2. Спасаем, ыы, Exception => e.
3. Выводим e.message.

Прога:



begin
raise 'Raise and Ensure Exception Handling'
rescue Exception => e
print e.message+"\n"
ensure
print 'Ensure Test'
end


Вывод:

Raise and Ensure Exception Handling Ensure Test

1. Создаем шо-та. Приписываем значение е.
2. Потом выводим его, но с новой строки.
3. Гарантируем, ыы и выводим строку 'Ensure Test'.