войти зарегистрироваться

RubyRuby — Arrays

Реализация массивов в Ruby отличается от PHP'шной, что и побудило написать меня эту статью.
Я расскажу про Ruby массивы, покажу в чем их отличие от хэшей и приведу несколько примеров из жизни с их использованием.

Массивы(arrays) и хэши(hashes) в Ruby


Массивы (arrays) в Ruby — набор проиндексированных элементов. Индексация начинается с нуля [0].
Ассоциативных массивов в Ruby нет.
Хэши(hashes) в Ruby — набор элементов в виде [ключ] => «значение»



Как видно на картинке, массивы и хэши очень похожи, основные различия между ними:
1) ключ в хэше вы выбираете сами, а в массиве ключом является индекс
2) вытекает из первого — элементы хэша не отсортированы в отличие от массивов

Как в массивах не может быть двух элементов с одинаковым индексом, так и в хэше не может быть двух элементов с одинаковым ключом.

C++Неочевидная особенность в синтаксисе определения переменных

Предлагается совершенно невинный на вид кусок кода на C++. Здесь нет ни шаблонов, ни виртуальных функций, ни наследования, но создатели этого чудесного языка спрятали грабли посреди чистa поля.

struct A {
  A (int i) {}
};

struct B {
  B (A a) {}
};

int main () {
  int i = 1;
  B b(A(i)); // (1)
  return 0;
}


* This source code was highlighted with Source Code Highlighter.


Вопрос: какой тип у переменной b? Совсем не тот, который можно было бы предположить на первый взгляд.

VIMСоздаем свою подсветку синтаксиса

Немного предыстории. Не так давно я решил присоединиться к проекту w3af (Web Application Attack and Audit Framework). В этом приложении есть возможность автоматизировать повторяющиеся действия с помощью скриптов команд (такой аналог батников и шелл-скриптов).

# This is a test for the 404 fingerprinting of the core
plugins
output console,textFile
output
output config textFile
set fileName output-w3af.txt
set verbose True
back
output config console
set verbose False
back
discovery pykto,serverHeader

discovery config pykto
#set mutateTests True
back

back
target
set target localhost/w3af/
back
start


Постоянно работая с ними, я подумал, а почему так все блекло? И родилась идея сделать простую подсветку синтаксиса для w3af скриптов.

Ненормальное программированиеIo Language: Синтаксис


В продолжение серии статей про Io, хотелось бы отдельно остановиться на синтаксисе языка.
В двух словах синтаксис Io можно описать так: простой, но странный. Многих удивит такой подход, но, спешу заверить, как и в Lisp, синтаксис неудобен только при взгляде со стороны. С эстетической точки зрения можно отдельно выделить тот факт, что многие прогаммы на Io внешне кажутся излишне разреженными, на экране остается много «лишнего», незаполненного полезным кодом места, это ощущение меня не покидает довольно давно, я пока не придумал, как полностью избавиться от этого вывиха мозга, я просто придумал для себя некоторые правила оформления кода, при соблюдении которых эффект значительно сморщивается:
  • Длина строки не должна превышать 80 символов (Привет, text mode!)
  • Между клонированием объекта и описанием тела нового должна быть пустая строка
  • Методы и свойства группируются
  • Без лишней необходимости скобки на новую строку не переносятся


Ну что, поехали. Вынос мозга №2.

Веб-разработкаSyntax Highlighter — подсветка синтаксиса кода на вашей вебстранице

Syntax Highlighter позволяет легко и красиво подсвечивать синтаксис кода на вашей странице. Написан на Javascript, соответственно работает на клиенте.

Поддерживает много языков, в сжатом виде занимает 11 килобайтов. Из минусов - не позволяет клиенту редактировать код на странице, readonly.

Вот как оно выглядет в действии



Демо: http://code.google.com/p/syntaxhighlight…
Лицензия: LGPL