diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..06a8744 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.openshift \ No newline at end of file diff --git a/archives.html b/archives.html index 9da6846..0405f8d 100644 --- a/archives.html +++ b/archives.html @@ -1,58 +1,9 @@ - - - - - - - - Блог 529 - - - - - - - - - - - - - - - - Блог 529 - -
-

Archives for Блог 529

- -
-
Пт 22 Июль 2016
-
Нахождение суммы k-ых степеней
-
Чт 17 Март 2016
-
Wallabag и реальная жизнь
-
Вс 10 Январь 2016
-
Как я шахматного бота писал
-
Вс 02 Август 2015
-
CrossGen v1.0
-
Пт 17 Июль 2015
-
Моё решение задачи 60
-
Пт 03 Июль 2015
-
Ещё одно вычисление выражений
-
Пт 17 Апрель 2015
-
Мой первый пост
-
-
- - - - - \ No newline at end of file + \ No newline at end of file diff --git a/archives.html.gz b/archives.html.gz new file mode 100644 index 0000000..c32767d Binary files /dev/null and b/archives.html.gz differ diff --git a/author/aleksei-lobanov.html b/author/aleksei-lobanov.html index 34ee137..bf7e023 100644 --- a/author/aleksei-lobanov.html +++ b/author/aleksei-lobanov.html @@ -1,66 +1,7 @@ - - - - - - - - Блог 529 - Алексей Лобанов - - - - - - - - - - - - - - - - - - - Блог 529 - Алексей Лобанов - -
- -
-
    -
  1. -
    -
    - -

    Нахождение суммы k-ых степеней

    -
    -
    -

    Как придумать формулу для суммы \(1^5 + 2^5 + 3^5 + \ldots + n^5\) и есть ли она вообще?

    - -
    -
    -
  2. -
    -
  3. -
    -
    - -

    Wallabag и реальная жизнь

    -
    -
    -

    Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.

    -
    -
    -
  4. -
    -
  5. - -
  6. -
    -
  7. -
    -
    - -

    CrossGen v1.0

    -
    -
    -

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

    -
    -
    -
  8. -
    -
  9. -
    -
    - -

    Моё решение задачи 60

    -
    -
    -

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

    -
    -
    -
  10. -
    -
  11. -
    -
    - -

    Ещё одно вычисление выражений

    -
    -
    -

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

    -
    -
    -
  12. -
    -
  13. - -
  14. -
    -
-
- Page 1 / 1 -
- -
-
- -
  • Wallabag и реальная жизнь

    Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.


  • Как я шахматного бота писал

    Как я проверял шахматное приложение на “ботоустойчивость”.


  • CrossGen v1.0

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


  • Моё решение задачи 60

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


  • Ещё одно вычисление выражений

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


  • Мой первый пост

    Кратко о том, почему я сделал блог.


  • Page 1 / 1
    - - - \ No newline at end of file + \ No newline at end of file diff --git a/author/aleksei-lobanov.html.gz b/author/aleksei-lobanov.html.gz new file mode 100644 index 0000000..5aa48c5 Binary files /dev/null and b/author/aleksei-lobanov.html.gz differ diff --git a/authors.html b/authors.html index 397a546..756f5b4 100644 --- a/authors.html +++ b/authors.html @@ -1,44 +1,9 @@ - - - - - - - - Блог 529 - Authors - - - - - - - - - - - - - - - - Блог 529 - Authors - -
    -

    Authors on Блог 529

    - - -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/authors.html.gz b/authors.html.gz new file mode 100644 index 0000000..06fd111 Binary files /dev/null and b/authors.html.gz differ diff --git a/categories.html b/categories.html index 0d0512e..b338459 100644 --- a/categories.html +++ b/categories.html @@ -1,45 +1,9 @@ - - - - - - - - Блог 529 - - - - - - - - - - - - - - - - Блог 529 - -
    - -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/categories.html.gz b/categories.html.gz new file mode 100644 index 0000000..6fc0d66 Binary files /dev/null and b/categories.html.gz differ diff --git a/category/misc.html b/category/misc.html index f85f60f..abeabce 100644 --- a/category/misc.html +++ b/category/misc.html @@ -1,66 +1,7 @@ - - - - - - - - Блог 529 - misc - - - - - - - - - - - - - - - - - - - Блог 529 - misc - -
    - -
    -
      -
    1. -
      -
      - -

      Нахождение суммы k-ых степеней

      -
      -
      -

      Как придумать формулу для суммы \(1^5 + 2^5 + 3^5 + \ldots + n^5\) и есть ли она вообще?

      - -
      -
      -
    2. -
      -
    3. -
      -
      - -

      Wallabag и реальная жизнь

      -
      -
      -

      Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.

      -
      -
      -
    4. -
      -
    5. - -
    6. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - -
  • Wallabag и реальная жизнь

    Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.


  • Мой первый пост

    Кратко о том, почему я сделал блог.


  • Page 1 / 1
    - - - \ No newline at end of file + \ No newline at end of file diff --git a/category/misc.html.gz b/category/misc.html.gz new file mode 100644 index 0000000..765fcb5 Binary files /dev/null and b/category/misc.html.gz differ diff --git a/category/proekty.html b/category/proekty.html index 178b888..fca1a6f 100644 --- a/category/proekty.html +++ b/category/proekty.html @@ -1,111 +1,9 @@ - - - - - - - - Блог 529 - Проекты - - - - - - - - - - - - - - - - - - - Блог 529 - Проекты - -
    - -
    -
      -
    1. - -
    2. -
      -
    3. -
      -
      - -

      CrossGen v1.0

      -
      -
      -

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

      -
      -
      -
    4. -
      -
    5. -
      -
      - -

      Ещё одно вычисление выражений

      -
      -
      -

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

      -
      -
      -
    6. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/category/proekty.html.gz b/category/proekty.html.gz new file mode 100644 index 0000000..01a7ac5 Binary files /dev/null and b/category/proekty.html.gz differ diff --git a/category/project-euler.html b/category/project-euler.html index 451c4fa..3708ba9 100644 --- a/category/project-euler.html +++ b/category/project-euler.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - Project Euler - - - - - - - - - - - - - - - - - - - Блог 529 - Project Euler - -
    - -
    -
      -
    1. -
      -
      - -

      Моё решение задачи 60

      -
      -
      -

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

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/category/project-euler.html.gz b/category/project-euler.html.gz new file mode 100644 index 0000000..db5572b Binary files /dev/null and b/category/project-euler.html.gz differ diff --git a/feeds/all.atom.xml.gz b/feeds/all.atom.xml.gz new file mode 100644 index 0000000..3572736 Binary files /dev/null and b/feeds/all.atom.xml.gz differ diff --git a/feeds/all.rss.xml.gz b/feeds/all.rss.xml.gz new file mode 100644 index 0000000..10b6ffc Binary files /dev/null and b/feeds/all.rss.xml.gz differ diff --git a/feeds/feed.atom.xml.gz b/feeds/feed.atom.xml.gz new file mode 100644 index 0000000..22dd1d7 Binary files /dev/null and b/feeds/feed.atom.xml.gz differ diff --git a/feeds/feed.rss.xml.gz b/feeds/feed.rss.xml.gz new file mode 100644 index 0000000..10b6ffc Binary files /dev/null and b/feeds/feed.rss.xml.gz differ diff --git a/feeds/misc.atom.xml.gz b/feeds/misc.atom.xml.gz new file mode 100644 index 0000000..a996cc5 Binary files /dev/null and b/feeds/misc.atom.xml.gz differ diff --git a/feeds/proekty.atom.xml.gz b/feeds/proekty.atom.xml.gz new file mode 100644 index 0000000..06e237c Binary files /dev/null and b/feeds/proekty.atom.xml.gz differ diff --git a/feeds/project-euler.atom.xml.gz b/feeds/project-euler.atom.xml.gz new file mode 100644 index 0000000..c6ca733 Binary files /dev/null and b/feeds/project-euler.atom.xml.gz differ diff --git a/feeds/tag-bgl.atom.xml.gz b/feeds/tag-bgl.atom.xml.gz new file mode 100644 index 0000000..ce3f95e Binary files /dev/null and b/feeds/tag-bgl.atom.xml.gz differ diff --git a/feeds/tag-blog.atom.xml.gz b/feeds/tag-blog.atom.xml.gz new file mode 100644 index 0000000..4b5cf92 Binary files /dev/null and b/feeds/tag-blog.atom.xml.gz differ diff --git a/feeds/tag-bot.atom.xml.gz b/feeds/tag-bot.atom.xml.gz new file mode 100644 index 0000000..95ecb37 Binary files /dev/null and b/feeds/tag-bot.atom.xml.gz differ diff --git a/feeds/tag-c.atom.xml.gz b/feeds/tag-c.atom.xml.gz new file mode 100644 index 0000000..51bafa0 Binary files /dev/null and b/feeds/tag-c.atom.xml.gz differ diff --git a/feeds/tag-go.atom.xml.gz b/feeds/tag-go.atom.xml.gz new file mode 100644 index 0000000..08428b2 Binary files /dev/null and b/feeds/tag-go.atom.xml.gz differ diff --git a/feeds/tag-matematika.atom.xml.gz b/feeds/tag-matematika.atom.xml.gz new file mode 100644 index 0000000..c2ec9dc Binary files /dev/null and b/feeds/tag-matematika.atom.xml.gz differ diff --git a/feeds/tag-open-source.atom.xml.gz b/feeds/tag-open-source.atom.xml.gz new file mode 100644 index 0000000..1f6b371 Binary files /dev/null and b/feeds/tag-open-source.atom.xml.gz differ diff --git a/feeds/tag-proekt.atom.xml.gz b/feeds/tag-proekt.atom.xml.gz new file mode 100644 index 0000000..0214d36 Binary files /dev/null and b/feeds/tag-proekt.atom.xml.gz differ diff --git a/feeds/tag-project-euler.atom.xml.gz b/feeds/tag-project-euler.atom.xml.gz new file mode 100644 index 0000000..0dfed89 Binary files /dev/null and b/feeds/tag-project-euler.atom.xml.gz differ diff --git a/feeds/tag-shakhmaty.atom.xml.gz b/feeds/tag-shakhmaty.atom.xml.gz new file mode 100644 index 0000000..adf3fec Binary files /dev/null and b/feeds/tag-shakhmaty.atom.xml.gz differ diff --git a/feeds/tag-wallabag.atom.xml.gz b/feeds/tag-wallabag.atom.xml.gz new file mode 100644 index 0000000..844532d Binary files /dev/null and b/feeds/tag-wallabag.atom.xml.gz differ diff --git a/feeds/tag-wxwidgets.atom.xml.gz b/feeds/tag-wxwidgets.atom.xml.gz new file mode 100644 index 0000000..1eb0024 Binary files /dev/null and b/feeds/tag-wxwidgets.atom.xml.gz differ diff --git a/googlecaf1c4b59d3adaec.html.gz b/googlecaf1c4b59d3adaec.html.gz new file mode 100644 index 0000000..fd09ece Binary files /dev/null and b/googlecaf1c4b59d3adaec.html.gz differ diff --git a/index.html b/index.html index cbb0696..725212a 100644 --- a/index.html +++ b/index.html @@ -1,66 +1,7 @@ - - - - - - - - Блог 529 - - - - - - - - - - - - - - - - - - - Блог 529 - -
    - -
    -
      -
    1. -
      -
      - -

      Нахождение суммы k-ых степеней

      -
      -
      -

      Как придумать формулу для суммы \(1^5 + 2^5 + 3^5 + \ldots + n^5\) и есть ли она вообще?

      - -
      -
      -
    2. -
      -
    3. -
      -
      - -

      Wallabag и реальная жизнь

      -
      -
      -

      Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.

      -
      -
      -
    4. -
      -
    5. - -
    6. -
      -
    7. -
      -
      - -

      CrossGen v1.0

      -
      -
      -

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

      -
      -
      -
    8. -
      -
    9. -
      -
      - -

      Моё решение задачи 60

      -
      -
      -

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

      -
      -
      -
    10. -
      -
    11. -
      -
      - -

      Ещё одно вычисление выражений

      -
      -
      -

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

      -
      -
      -
    12. -
      -
    13. - -
    14. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - -
  • Wallabag и реальная жизнь

    Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.


  • Как я шахматного бота писал

    Как я проверял шахматное приложение на “ботоустойчивость”.


  • CrossGen v1.0

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


  • Моё решение задачи 60

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


  • Ещё одно вычисление выражений

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


  • Мой первый пост

    Кратко о том, почему я сделал блог.


  • Page 1 / 1
    - - - \ No newline at end of file + \ No newline at end of file diff --git a/index.html.gz b/index.html.gz new file mode 100644 index 0000000..3d62298 Binary files /dev/null and b/index.html.gz differ diff --git a/pages/about.html b/pages/about.html index 1df1ecc..d93e076 100644 --- a/pages/about.html +++ b/pages/about.html @@ -1,77 +1,9 @@ - - - - - - - - Блог 529 - - - - - - - - - - - - - - - - - - Блог 529 - -
    -
    -
    -

    Здравствуйте, я Алексей Лобанов

    -
    -
    -

    -

    В данный момент студент ВМК МГУ. Немного занимаюсь фрилансом.

    -

    В основном программирую на Python и C++, есть также знания HTML, CSS, Delphi, Bash. Разрабатываю прикладные приложения (в том числе графические под Win/MacOS/Linux), парсеры (с использованием scrapy), скрипты автоматизации -Есть опыт разработки веб-приложений с использованием микрофреймворка Flask.

    - -
    -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/pages/about.html.gz b/pages/about.html.gz new file mode 100644 index 0000000..c2aa514 Binary files /dev/null and b/pages/about.html.gz differ diff --git a/pages/projects.html b/pages/projects.html index 84cdb3a..d5fe994 100644 --- a/pages/projects.html +++ b/pages/projects.html @@ -1,93 +1,9 @@ - - - - - - - - Мои проекты - - - - - - - - - - - - - - - - - - - - Мои проекты - -
    - -
    -
      -
    1. -
      -
      -

      Мои проекты

      -
      -
      -

      Значительная часть моих проектов есть на GitHub или BitBucket вместе с открытым исходным кодом.

      -

      CrossGen

      -

      alt text

      -

      Что использовалось

      -
        -
      1. C++
      2. -
      3. wxWidgets
      4. -
      -

      Что реализовано

      -
        -
      1. Графический интерфейс
      2. -
      3. Автоматическая локализация всего интерфейса на русский и английский языки
      4. -
      5. Быстрая генерация кроссворда по заданной сетке с использованием эвристики
      6. -
      7. Автоматический бенчмарк для измеренеия производительноти генерации -Подробнее я писал тут
      8. -
      -

      За подробностями пишите мне на почту

      -
      -
      -
      -
    2. -
    -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/pages/projects.html.gz b/pages/projects.html.gz new file mode 100644 index 0000000..e34ce26 Binary files /dev/null and b/pages/projects.html.gz differ diff --git a/posts/crossgen-v10/index.html b/posts/crossgen-v10/index.html index 5aff145..6a09175 100644 --- a/posts/crossgen-v10/index.html +++ b/posts/crossgen-v10/index.html @@ -1,93 +1,7 @@ - - - - - - - - CrossGen v1.0 - - - - - - - - - - - - - - - - - - - - CrossGen v1.0 - -
    - -
    -
      -
    1. -
      -
      - -

      CrossGen v1.0

      -
      - -
      -

      Начать, наверное, нужно с того, что реальную практическую значимость я осознал после того, как реализовал 90% того, что есть сейчас. Сейчас мне кажется, что единственное применение данного приложения лишь в том, чтобы создавать кроссворды очень сложной или необычной формы. Зачем это надо обычному человеку я вообще не знаю.

      -

      Собственно, алгоритм генерации изначально был примитивным: простой рекурсивный поиск с отсечением. Скорость генерации более-менее сложных сеток была ужасной (для перцентиля 30% это примерно 40 минут на этой сетке, в общем случае, время генерации непредсказуемо.

      -

      В дальнейшем были выполнены некоторые оптимизации. Первой более-менее значимой стала замена передачи сетки в юникоде (во внутреннем цикле) на передачу сетки в однобайтовой кодировке, таким образом, языки с алфавитом больше ~200 букв пролетают. Впрочем, мне кажется, что им не слишком сильно требуются кроссворды. Такая оптимизация дала ~35% прироста при значимом времени перебора (больше секунды).

      -

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

      -

      Наибольший прирост, как и ожидалось, дало упорядочивание словаря по некоторому критерию. Таким образом, при переборе, “плохие” варианты будут попадаться редко. На это ушло немногим больше дня. В конечном итоге, целевой функцией, которая стала критерием сортировки, стала такая \(\sqrt[n]{\prod_{i=1}^{n}{f\left( a_i \right)}}\) (иначе говоря, среднее геометрическое отлично подошло), где \(n\) — количество букв в слове, \(a_i\) — буквы слова, а \(f \left( x \right)\) есть вероятность появления буквы \(x\). Я отсекаю примерно половину самых “плохих” слов, а из того, что осталось я составляю кроссворд. Производительность, в среднем, увеличилась в ~1000 раз. На тестовых сетках для перцентиля 90% длительность работы около секунды.

      -

      Что реализовано

      -
        -
      • Прозрачная интернационализация (пока только русский и английский языки)
      • -
      • Быстрая генерация
      • -
      • Экспорт в текстовом формате
      • -
      • Простая смена словаря
      • -
      • Относительно простое редактирование сеток
      • -
      -

      Что может быть реализовано

      -
        -
      • Визуальный редактор сетки
      • -
      • Экспорт в HTML, PDF, Markdown
      • -
      • Экспорт сетки в файл картинки
      • -
      -

      Скриншоты

      -
        -
      • Версия для Xubuntu: -alt text
      • -
      • Версия для Windows 7: -alt text
      • -
      - -
      -
      - -
      -
      -
      -

      - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/crossgen-v10/index.html.gz b/posts/crossgen-v10/index.html.gz new file mode 100644 index 0000000..76bee8c Binary files /dev/null and b/posts/crossgen-v10/index.html.gz differ diff --git a/posts/eshchio-odno-vychislenie-vyrazhenii/index.html b/posts/eshchio-odno-vychislenie-vyrazhenii/index.html index 823500d..63ce3f7 100644 --- a/posts/eshchio-odno-vychislenie-vyrazhenii/index.html +++ b/posts/eshchio-odno-vychislenie-vyrazhenii/index.html @@ -1,73 +1,7 @@ - - - - - - - - Ещё одно вычисление выражений - - - - - - - - - - - - - - - - - - - - Ещё одно вычисление выражений - -
    - -
    -
      -
    1. -
      -
      - -

      Ещё одно вычисление выражений

      -
      - -
      -

      Задачка кажется не очень сложной, даже, если не знать как её делать (я не знал). Целью является быстрое вычисление чего-то типа 4 * ( 5 + 7 ^ 4). Для это я парсил исходную строку в список токенов, а затем непосредственно вычислял, что получится.

      -

      Я решил, что проще всего будет реализовать (а мне потом и понять) алгоритм, когда после каждого действия будет выполняться некий “хороший” инвариант. Первое что приходит в голову — это то, что истинность выражение после выполнения операции не меняется (TITO соблюдается). То есть выражение 3 + 5 можно заменить на 8 или хотя бы на 4 * 2.

      -

      Непосредственно сама обработка является несколькими проходами, так что в каждом проходе мы избавляемся от операций одного приоритета. 4 + 5 * 3 заменяется на 4 + 15, 7 - 5 * 2^3 заменяется на 7 - 5*8. Таким образом, каждый цикл тривиален, и легко задавать приоритеты операций.

      -

      Если использовать один список как контейнер для токенов и при работе изменять непосредственно его, сохраняя указанные инварианты, то сложность получается \(O\left( N \right)\), где \(N\) — число токенов.

      -

      Времени на непосредственно кодирование ушло часа три-четыре, но в это время не входит продумывание мелких деталей.

      -

      Всё написано на C++11. Исходники лежат на GitHub и BitBucket.

      - -
      -
      - -
      -
      -
      -

      - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/eshchio-odno-vychislenie-vyrazhenii/index.html.gz b/posts/eshchio-odno-vychislenie-vyrazhenii/index.html.gz new file mode 100644 index 0000000..a362022 Binary files /dev/null and b/posts/eshchio-odno-vychislenie-vyrazhenii/index.html.gz differ diff --git a/posts/kak-ia-shakhmatnogo-bota-pisal/index.html b/posts/kak-ia-shakhmatnogo-bota-pisal/index.html index 3c5b7af..8adb13c 100644 --- a/posts/kak-ia-shakhmatnogo-bota-pisal/index.html +++ b/posts/kak-ia-shakhmatnogo-bota-pisal/index.html @@ -1,114 +1,16 @@ - - - - - - - - Как я шахматного бота писал - - - - - - - - - - - - - - - - - - - - Как я шахматного бота писал - -
    - -
    -
      -
    1. -
      -
      - -

      Как я шахматного бота писал

      -
      - -
      -

      Лет 5 назад я достаточно активно играл в “живые” шахматы. Потом времени на это стало не хватать и постепенно перешёл на редкие партии в онлайне. Сейчас для игры я использую одно из самых популярных приложений вк. Это проще, чем использовать, к примеру, FICS. Предмет обсуждения появился из-за того, что я как-то раз встретился с соперником, который на все ходы потратил порядка 10 секунд, при этом не допустив значимых ошибок. Тогда я решил написать своего бота, чтобы узнать что с ним будет и столкнусь ли я с какими-нибудь подводными камнями.

      -

      Целью было максимально быстрое написание максимально простого решения. Поэтому от разбора протокола я сразу отказался, тем более у меня не было подобного опыта ранее. Была мысль работать с FICS (у меня есть библиотека для работы с их протоколом), но поскольку я там не играю, то и результаты были бы не так интересны, во всяком случае, для меня. Таким образом, я писал простого кликера для приложения вк.

      -

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

      -

      В самом скрипте около 200 строк на python. Очень сильно помогла библиотека chess, которая взяла на себя общение с движком (я использовал stockfish), проверку на допустимые ходы и определение мата. Некоторое время я уделил тому, чтобы сделать бота максимально похожим на человека, чтобы было невозможно выявить, что это бот полностью автоматическими средствами. По пунктам:

      -
        -
      • Клик по полю в случайном месте, с распределением по Гауссу, центр которого не совпадает с центром клетки
      • -
      • Случайное время хода, длительность которого распределена по Гауссу, причём средняя длительность хода изменяется, в зависимости от номера текущего хода.
      • -
      • Прокладываются дополнительные точки, с распределением по Гауссу, при перемещении курсора от точки к точке.
      • -
      -

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

      -

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

      -

      На момент публикации аккаунт вполне жив. Рейтинг достиг некоторого потолка (около 2200), после которого найти игроков примерно равного рейтинга, не являющихся ботами, очень сложно. Сражаться же с ботами сильно сложнее, такую цель я не ставил. Интересно, хоть и ожидаемо, что при наборе рейтинга было достаточно личностей, для которых возможность того, что их нагло обманули, и они играли с ботом была столь неприятна, что они не могли сдерживаться. Например: -alt text

      -

      p.s. Уже после создания рабочей версии от одного из оппонентов узнал про lichess.org. Это отличный ресурс на котором кроме, собственно, платформы для игры в шахматы (поддерживается большое количество их вариантов), есть тренировки по дебютам, анализ игр. Самое интересное — ресурс полностью открытый, все исходники есть на github.

      -

      В процессе подготовки данного материала узнал про InternetChessKiller, который делает, фактически, тоже самое, что и мой скрипт, но без привязки к какой-то одной игровой площадке. Исходники старых версий можно найти, например, в этом репозитории.

      -

      p.p.s. Боты на серверах, предназначенных для людей, играющие в игры, которые предназначены для людей очень сильно мешают людям. Тем не менее, проверять, насколько сильно они мешают не нужно!

      -
      -
      - -
      -
      -
      - - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/kak-ia-shakhmatnogo-bota-pisal/index.html.gz b/posts/kak-ia-shakhmatnogo-bota-pisal/index.html.gz new file mode 100644 index 0000000..05dd3ba Binary files /dev/null and b/posts/kak-ia-shakhmatnogo-bota-pisal/index.html.gz differ diff --git a/posts/moi-pervyi-post/index.html b/posts/moi-pervyi-post/index.html index 83c2865..7d27543 100644 --- a/posts/moi-pervyi-post/index.html +++ b/posts/moi-pervyi-post/index.html @@ -1,100 +1,16 @@ - - - - - - - - Мой первый пост - - - - - - - - - - - - - - - - - - - - Мой первый пост - -
    - -
    -
      -
    1. -
      -
      - -

      Мой первый пост

      -
      - -
      -

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

      -

      Пока я планирую публиковать свои, возможно не лучшие, но рабочие решения для задач из Project Euler (projecteuler.net). На самом деле, решения значительного числа задач уже есть в Сети, но на английском. Хотя, это и не есть большая проблема.

      -
      -
      - -
      -
      -
      - - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/moi-pervyi-post/index.html.gz b/posts/moi-pervyi-post/index.html.gz new file mode 100644 index 0000000..7b4aafd Binary files /dev/null and b/posts/moi-pervyi-post/index.html.gz differ diff --git a/posts/moio-reshenie-zadachi-60/index.html b/posts/moio-reshenie-zadachi-60/index.html index 8417013..3d463fb 100644 --- a/posts/moio-reshenie-zadachi-60/index.html +++ b/posts/moio-reshenie-zadachi-60/index.html @@ -1,73 +1,7 @@ - - - - - - - - Моё решение задачи 60 - - - - - - - - - - - - - - - - - - - - Моё решение задачи 60 - -
    - -
    -
      -
    1. -
      -
      - -

      Моё решение задачи 60

      -
      - -
      -

      Необходимо найти множество из пяти простых чисел с минимальной суммой такое, что после “склеивания” в любом порядке любых двух чисел из него тоже будет простое число. Здесь под процедурой “склеивания” чисел \(a\) и \(b\) подразумевается получения из \(a = \overline{a_1 a_2 \ldots a_n}\) и \(b = \overline{b_1 b_2 \ldots b_m}\) некоторого \(c\) так, что \(c = \overline{a_1 a_2 \ldots a_n b_1 b_2 \ldots b_m}\).

      -

      Полное условие можно найти тут

      -

      Для начала, можно понять, что непосредственный перебор “в лоб” слишком медленный и нужного результата не даст. Поэтому хочется уйти от, как мне кажется, не самого формализуемого условия к чему-то более простого, с чем проще работать. Давайте сначала поймём, какие вообще числа могут быть в одном множестве. Для этого достаточно перебрать все разбиения на два подчисла всех простых чисел. Это достаточно быстро, порядка \(O\left( N \right)\) операций. Важно не забыть, что мы можем разбивать число \(p\) только на \(\overline{p_1 p_2}\), между числами не может быть нулей! То есть если число 37 разбивается на 3 и 7, то 307 нет.

      -

      Пусть мы получили набор таких разбиений, то есть набор пар вида \(\left( p, q \right)\). Давайте составим из них граф, где вершинки это простые числа, а ориентированное ребро из \(p\) в \(q\) означает, что есть пара \(\left( p, q \right)\). Из того, что порядок склеивания чисел произвольный сразу следует, что рассматриваемый граф должен быть неориентированным. Таким образом, все пары \(\left( p, q \right)\) для которых нет пары \(\left( q, p \right)\) необходимо выкинуть, а из оставшихся построить граф.

      -

      Теперь задача стало гораздо понятнее: достаточно выбрать клику размера 5, что сумма значений её вершин минимальна. В общем случае, это достаточно ресурсоёмкая(как мне кажется) задача, но в реальном графе количество рёбер не слишком большое. В худшем случае, по теореме Турана, количество рёбер в графе лишь с одной такой кликой примерно на 10% меньше числа рёбер в полном графе.

      -

      Непосредственно сам поиск такой клики можно реализовать тривиально. Ниже мой код на C++11 с использованием библиотеки Boost Graph Library (BGL).

      -
      #include <iostream>
      +        
      1. Моё решение задачи 60

        Необходимо найти множество из пяти простых чисел с минимальной суммой такое, что после “склеивания” в любом порядке любых двух чисел из него тоже будет простое число. Здесь под процедурой “склеивания” чисел \(a\) и \(b\) подразумевается получения из \(a = \overline{a_1 a_2 \ldots a_n}\) и \(b = \overline{b_1 b_2 \ldots b_m}\) некоторого \(c\) так, что \(c = \overline{a_1 a_2 \ldots a_n b_1 b_2 \ldots b_m}\).

        Полное условие можно найти тут

        Для начала, можно понять, что непосредственный перебор “в лоб” слишком медленный и нужного результата не даст. Поэтому хочется уйти от, как мне кажется, не самого формализуемого условия к чему-то более простого, с чем проще работать. Давайте сначала поймём, какие вообще числа могут быть в одном множестве. Для этого достаточно перебрать все разбиения на два подчисла всех простых чисел. Это достаточно быстро, порядка \(O\left( N \right)\) операций. Важно не забыть, что мы можем разбивать число \(p\) только на \(\overline{p_1 p_2}\), между числами не может быть нулей! То есть если число 37 разбивается на 3 и 7, то 307 нет.

        Пусть мы получили набор таких разбиений, то есть набор пар вида \(\left( p, q \right)\). Давайте составим из них граф, где вершинки это простые числа, а ориентированное ребро из \(p\) в \(q\) означает, что есть пара \(\left( p, q \right)\). Из того, что порядок склеивания чисел произвольный сразу следует, что рассматриваемый граф должен быть неориентированным. Таким образом, все пары \(\left( p, q \right)\) для которых нет пары \(\left( q, p \right)\) необходимо выкинуть, а из оставшихся построить граф.

        Теперь задача стало гораздо понятнее: достаточно выбрать клику размера 5, что сумма значений её вершин минимальна. В общем случае, это достаточно ресурсоёмкая(как мне кажется) задача, но в реальном графе количество рёбер не слишком большое. В худшем случае, по теореме Турана, количество рёбер в графе лишь с одной такой кликой примерно на 10% меньше числа рёбер в полном графе.

        Непосредственно сам поиск такой клики можно реализовать тривиально. Ниже мой код на C++11 с использованием библиотеки Boost Graph Library (BGL).

        #include <iostream>
         #include <algorithm>
         #include <vector>
         #include <set>
        @@ -232,12 +166,7 @@
                 cout << "Result is " << min_element(good_sums.begin(),good_sums.end(), [](pair<size_t, size_t> a, pair<size_t, size_t> b){return a.first < b.first;})->first << endl;
             return 0;
         }
        -
        - - -

        Ответ: 26033

        -

        UPD. Кажется, getNeedSet можно было реализовать гораздо проще, использую BGL посетителей (Visitors). Но, к сожалению, на этапе написания кода я про это забыл.

        - -
        -
        - -
        -
        -
        -


      - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/moio-reshenie-zadachi-60/index.html.gz b/posts/moio-reshenie-zadachi-60/index.html.gz new file mode 100644 index 0000000..b85cffa Binary files /dev/null and b/posts/moio-reshenie-zadachi-60/index.html.gz differ diff --git a/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html b/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html index 8c66b36..b0c7401 100644 --- a/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html +++ b/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html @@ -1,84 +1,7 @@ - - - - - - - - Нахождение суммы k-ых степеней - - - - - - - - - - - - - - - - - - - - Нахождение суммы k-ых степеней - -
    - -
    -
      -
    1. -
      -
      - -

      Нахождение суммы k-ых степеней

      -
      - -
      -

      Давайте сразу обобщим задачу до нахождения \(f_k\left( n \right)\), что

      $$f_k\left( n \right) = 1^k + 2^k + \ldots + n^k$$
      -Для \(k=1\) формула известна всем школьникам: \(f_1\left( n \right) = \frac{n\left(n+1 \right)}{2}\). Формулу для \(k=2\) знают уже не все, но всё же в школе её найти можно (я видел на обложке учебника по алгебре): \(f_2\left( n \right) = \frac{n\left(n+1 \right) \left( 2n + 1 \right)}{6}\)

      -

      Интуиция может подсказать, что \(f_k \left( n \right)\) есть некий полином со степенью \(k+1\). Если это так, то его нахождение тривиально. Например, можно посчитать его в явном виде, используя полином Лагагранжа. -Осталось показать, что наша функция представима в таком виде.

      -

      Для начала введём обозначение. “Нижней степенью”, \(x^{\underline{k}}\), будем обозначать такое выражение:

      $$x^{\underline{k}} = x(x-1)\cdot \ldots \cdot (x-k+1)$$
      .

      -

      Далее, заметим следующее, если \(a_i = A_{i+1} - A_i\), где \(\lbrace a_i \rbrace\) и \(\lbrace A_i \rbrace\) — некие последовательности, то \(\sum_{i=1}^n = A_{n+1}-A_1\) (телескопирование, можно посмотреть тут, с. 6).

      -

      Теперь посчитаем сумму \(\sum_{i=1}^n i^{\underline{k}}\). Для этого достаточно понять, что \(\left( x+1 \right)^{\underline{k+1}} - \left(x \right)^{\underline{k+1}} = \left( k+ 1 \right)x^{\underline{k}}\). Отсюда сразу получаем, что -

      $$\sum_{i=1}^n i^{\underline{k}} = \frac{\left( n+1 \right)^{\underline{k+1}}}{k+1}$$
      -

      -

      Осталось показать, что “нормальные” степени выражаются через нижние. Начнём со степени \(k=1\), тут всё просто: -

      $$x = x^{\underline{1}}$$
      -С бОльшими степенями сделаем следующее: считая, что все степени, меньше, чем \(k\) мы выражать умеем, раскроем скобки в определении нижней степени. Теперь поймём, что старший коэффициент \(1\): \(x^{\underline{k}} = x^k + \sum_{i=1}^k a_ix^i\) или \(x^k = \sum_{i=1}^k a_ix^i - x^{\underline{k}}\). Осталось понять, что каждое из слагаемых вида \(a_ix^i\) мы умеем выражать через нижние степени. Таким образом, можно получить следующее: -
      $$ \sum_{i=1}^{n} i^k = \sum_{i=1}^{n} \sum_{j=1}^{k} a_j i^{\underline{k}} = \sum_{j=1}^{k} \sum_{i=1}^{n} a_j i^{\underline{k}} = \sum_{j=1}^{k} \frac{a_j \left(n+1 \right)^{\underline{k+1}}}{k+1}$$
      -

      -

      Кстати, формула для суммы в самом начале такая: -

      $$ \sum_{i=1}^n i^5 = \frac{1}{12} n^2 \left(n+1 \right)^2 \left(2n^2 + 2n-1 \right) $$
      -

      - -
      -
      - -
      -
      -
      -

      - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html.gz b/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html.gz new file mode 100644 index 0000000..fda8336 Binary files /dev/null and b/posts/nakhozhdenie-summy-k-ykh-stepenei/index.html.gz differ diff --git a/posts/wallabag-i-realnaia-zhizn/index.html b/posts/wallabag-i-realnaia-zhizn/index.html index 3c2d8f7..7758054 100644 --- a/posts/wallabag-i-realnaia-zhizn/index.html +++ b/posts/wallabag-i-realnaia-zhizn/index.html @@ -1,114 +1,16 @@ - - - - - - - - Wallabag и реальная жизнь - - - - - - - - - - - - - - - - - - - - Wallabag и реальная жизнь - -
    - -
    -
      -
    1. -
      -
      - -

      Wallabag и реальная жизнь

      -
      - -
      -

      Начать следует с того, что Wallabag действительно является самым популярным среди открытых приложений для отложенного чтения. Можно взять, например, alternativeto:

      -

      Первый релиз вышел почти два года назад. Тем не менее, мне сложно назвать продукт зрелым. Последняя, на момент написания, версия 2.0.0-beta.2 не может похвастаться простым процессом установки. Вариант просто выполнить команды из мануалов по очереди у меня не получился. В этом соперничать с тем же Pocket, очевидно, бессмысленно.

      -

      Стандартная тема, material, ужасно выглядит на моём ноутбуке с разрешением 1366x768, элементы явно рассчитаны на большую диагональ. Ещё часть места отъедает неубирающаяся плашка внизу страницы, предупреждающая о том, что баги в бета версии не есть что-то плохое. Официальное Android приложение упорно не может найти сервер.

      -

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

      -

      Сложности, впрочем, только начались. Обещанная синхронизация с Pocket работает, мягко говоря, неоптимально. После загрузки экспортированного html файла со ссылками, wallabag почти час выкачивал мои 750 статей. Где-то на 500-й статье он выделил слишком много памяти и упал с ошибкой. После этого пришлось руками искать потенциально проблемные статьи и удалять их по одной — удалить сразу несколько элементов невозможно. Затем надо было выкачивать ещё 250 статей, периодически посматривая, чтобы ничего снова не упало.

      -

      Кажется, что все проблемы закончились, но нет. Дальше синхронизация с телефоном. Она заняла почти столько же времени, при этом, начальное очевидное предположение о том, что токен безопасности вбивать не нужно (он сам заполняется в приложении) стоило где-то 15 минут поиска. Но и это не всё. После того, как база загрузилась, небольшие изменения на телефоне (такие как удаление статьи) синхронизировались больше минуты!

      -

      Резюме: пользоваться можно, но советовать кому-либо это использовать я точно не стану.

      -

      Этого бы поста не было бы, если бы я сказал, что Wallabag плохой, а OTHER_PRODUCT хороший и можно пользоваться им. Но я так написать не могу. Ни я, ни alternativeto других решений не знают. Значит нужно их создать. На моём слабеньком VPS уже почти год трудится Syncthing, управляя значительным количеством файлов с минимальной нагрузкой на ЦП. Поэтому мне кажется, что Go подойдёт идеально.

      -

      Если написать подобный продукт на Go, то многие проблемы даже не появятся:

      -
        -
      • не нужно разрешать большое количество зависимостей — достаточно одного бинарника
      • -
      • скорость генерации контента (например, создание pdf, epub) будет значительно выше
      • -
      • небольшой оверхед позволит всё хранить в памяти
      • -
      • работа почти на чём угодно
      • -
      -

      В совокупности, будет достигнуто, как мне кажется, самое главное — удобство для обычного пользователя, который сможет без проблем развернуть это на любом VPS.

      -
      -
      - -
      -
      -
      - - - comments powered by Disqus -
      -
      -
    2. -
    -
    -
    - -comments powered by Disqus - - - \ No newline at end of file + \ No newline at end of file diff --git a/posts/wallabag-i-realnaia-zhizn/index.html.gz b/posts/wallabag-i-realnaia-zhizn/index.html.gz new file mode 100644 index 0000000..baf0177 Binary files /dev/null and b/posts/wallabag-i-realnaia-zhizn/index.html.gz differ diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..12d957d --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,209 @@ + + + + +http://likemath.ru/ +2016-08-09T22:37:58-00:00 +daily +0.5 + + + +http://likemath.ru/archives.html +2016-08-09T22:37:58-00:00 +daily +0.5 + + + +http://likemath.ru/tags.html +2016-08-09T22:37:58-00:00 +daily +0.5 + + + +http://likemath.ru/categories.html +2016-08-09T22:37:58-00:00 +daily +0.5 + + + +http://likemath.ru/pages/about.html +2015-04-17T00:00:00+03:00 +monthly +0.5 + + + +http://likemath.ru/pages/projects.html +2015-08-17T00:00:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/nakhozhdenie-summy-k-ykh-stepenei/ +2016-07-22T13:35:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/wallabag-i-realnaia-zhizn/ +2016-03-17T13:35:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/kak-ia-shakhmatnogo-bota-pisal/ +2016-01-10T13:35:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/crossgen-v10/ +2015-08-04T17:40:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/moio-reshenie-zadachi-60/ +2015-11-22T23:41:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/eshchio-odno-vychislenie-vyrazhenii/ +2015-07-03T17:40:00+03:00 +monthly +0.5 + + + +http://likemath.ru/posts/moi-pervyi-post/ +2015-04-17T13:35:00+03:00 +monthly +0.5 + + + +http://likemath.ru/category/misc.html +2016-07-22T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/category/proekty.html +2016-01-10T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/category/project-euler.html +2015-11-22T23:41:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/open-source.html +2016-03-17T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/bgl.html +2015-11-22T23:41:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/matematika.html +2016-07-22T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/c.html +2015-11-22T23:41:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/project-euler.html +2015-11-22T23:41:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/wallabag.html +2016-03-17T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/wxwidgets.html +2015-08-04T17:40:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/proekt.html +2016-01-10T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/shakhmaty.html +2016-01-10T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/go.html +2016-03-17T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/blog.html +2015-04-17T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/tag/bot.html +2016-01-10T13:35:00+02:30 +daily +0.5 + + + +http://likemath.ru/author/aleksei-lobanov.html +2016-07-22T13:35:00+02:30 +daily +0.5 + + + diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000..26f76e1 Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/tag/bgl.html b/tag/bgl.html index 8da86ae..375ca7b 100644 --- a/tag/bgl.html +++ b/tag/bgl.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - BGL - - - - - - - - - - - - - - - - - - - Блог 529 - BGL - -
    - -
    -
      -
    1. -
      -
      - -

      Моё решение задачи 60

      -
      -
      -

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

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/bgl.html.gz b/tag/bgl.html.gz new file mode 100644 index 0000000..3811049 Binary files /dev/null and b/tag/bgl.html.gz differ diff --git a/tag/blog.html b/tag/blog.html index 67e8473..fae413d 100644 --- a/tag/blog.html +++ b/tag/blog.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - блог - - - - - - - - - - - - - - - - - - - Блог 529 - блог - -
    - -
    -
      -
    1. - -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/blog.html.gz b/tag/blog.html.gz new file mode 100644 index 0000000..a37870b Binary files /dev/null and b/tag/blog.html.gz differ diff --git a/tag/bot.html b/tag/bot.html index e75eb24..89887ee 100644 --- a/tag/bot.html +++ b/tag/bot.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - бот - - - - - - - - - - - - - - - - - - - Блог 529 - бот - -
    - -
    -
      -
    1. - -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/bot.html.gz b/tag/bot.html.gz new file mode 100644 index 0000000..6593ccb Binary files /dev/null and b/tag/bot.html.gz differ diff --git a/tag/c.html b/tag/c.html index 9367411..1f6584f 100644 --- a/tag/c.html +++ b/tag/c.html @@ -1,97 +1,9 @@ - - - - - - - - Блог 529 - c++ - - - - - - - - - - - - - - - - - - - Блог 529 - c++ - -
    - -
    -
      -
    1. -
      -
      - -

      CrossGen v1.0

      -
      -
      -

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

      -
      -
      -
    2. -
      -
    3. -
      -
      - -

      Моё решение задачи 60

      -
      -
      -

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

      -
      -
      -
    4. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/c.html.gz b/tag/c.html.gz new file mode 100644 index 0000000..8f55eb2 Binary files /dev/null and b/tag/c.html.gz differ diff --git a/tag/go.html b/tag/go.html index 4324756..fb1999e 100644 --- a/tag/go.html +++ b/tag/go.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - Go - - - - - - - - - - - - - - - - - - - Блог 529 - Go - -
    - -
    -
      -
    1. -
      -
      - -

      Wallabag и реальная жизнь

      -
      -
      -

      Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/go.html.gz b/tag/go.html.gz new file mode 100644 index 0000000..d5b6d29 Binary files /dev/null and b/tag/go.html.gz differ diff --git a/tag/matematika.html b/tag/matematika.html index 5eacd6d..faa093e 100644 --- a/tag/matematika.html +++ b/tag/matematika.html @@ -1,66 +1,7 @@ - - - - - - - - Блог 529 - математика - - - - - - - - - - - - - - - - - - - Блог 529 - математика - -
    - -
    -
      -
    1. -
      -
      - -

      Нахождение суммы k-ых степеней

      -
      -
      -

      Как придумать формулу для суммы \(1^5 + 2^5 + 3^5 + \ldots + n^5\) и есть ли она вообще?

      - -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - -
    Page 1 / 1
    - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/matematika.html.gz b/tag/matematika.html.gz new file mode 100644 index 0000000..73a3d45 Binary files /dev/null and b/tag/matematika.html.gz differ diff --git a/tag/open-source.html b/tag/open-source.html index 1bc69d7..d6daab7 100644 --- a/tag/open-source.html +++ b/tag/open-source.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - open source - - - - - - - - - - - - - - - - - - - Блог 529 - open source - -
    - -
    -
      -
    1. -
      -
      - -

      Wallabag и реальная жизнь

      -
      -
      -

      Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/open-source.html.gz b/tag/open-source.html.gz new file mode 100644 index 0000000..5d64ae7 Binary files /dev/null and b/tag/open-source.html.gz differ diff --git a/tag/proekt.html b/tag/proekt.html index 9f0c51f..9d91699 100644 --- a/tag/proekt.html +++ b/tag/proekt.html @@ -1,111 +1,9 @@ - - - - - - - - Блог 529 - проект - - - - - - - - - - - - - - - - - - - Блог 529 - проект - -
    - -
    -
      -
    1. - -
    2. -
      -
    3. -
      -
      - -

      CrossGen v1.0

      -
      -
      -

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

      -
      -
      -
    4. -
      -
    5. -
      -
      - -

      Ещё одно вычисление выражений

      -
      -
      -

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

      -
      -
      -
    6. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/proekt.html.gz b/tag/proekt.html.gz new file mode 100644 index 0000000..3b1c602 Binary files /dev/null and b/tag/proekt.html.gz differ diff --git a/tag/project-euler.html b/tag/project-euler.html index 451c4fa..3708ba9 100644 --- a/tag/project-euler.html +++ b/tag/project-euler.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - Project Euler - - - - - - - - - - - - - - - - - - - Блог 529 - Project Euler - -
    - -
    -
      -
    1. -
      -
      - -

      Моё решение задачи 60

      -
      -
      -

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

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/project-euler.html.gz b/tag/project-euler.html.gz new file mode 100644 index 0000000..db5572b Binary files /dev/null and b/tag/project-euler.html.gz differ diff --git a/tag/shakhmaty.html b/tag/shakhmaty.html index 4b2237f..4f1d96d 100644 --- a/tag/shakhmaty.html +++ b/tag/shakhmaty.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - шахматы - - - - - - - - - - - - - - - - - - - Блог 529 - шахматы - -
    - -
    -
      -
    1. - -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/shakhmaty.html.gz b/tag/shakhmaty.html.gz new file mode 100644 index 0000000..e16c10e Binary files /dev/null and b/tag/shakhmaty.html.gz differ diff --git a/tag/wallabag.html b/tag/wallabag.html index b5e599e..8aface6 100644 --- a/tag/wallabag.html +++ b/tag/wallabag.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - wallabag - - - - - - - - - - - - - - - - - - - Блог 529 - wallabag - -
    - -
    -
      -
    1. -
      -
      - -

      Wallabag и реальная жизнь

      -
      -
      -

      Как я устанавливал известнейшее свободное решение для отложенного чтения, и что из этого получилось.

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/wallabag.html.gz b/tag/wallabag.html.gz new file mode 100644 index 0000000..72205da Binary files /dev/null and b/tag/wallabag.html.gz differ diff --git a/tag/wxwidgets.html b/tag/wxwidgets.html index 22a6593..fdb62f0 100644 --- a/tag/wxwidgets.html +++ b/tag/wxwidgets.html @@ -1,83 +1,9 @@ - - - - - - - - Блог 529 - wxWidgets - - - - - - - - - - - - - - - - - - - Блог 529 - wxWidgets - -
    - -
    -
      -
    1. -
      -
      - -

      CrossGen v1.0

      -
      -
      -

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

      -
      -
      -
    2. -
      -
    -
    - Page 1 / 1 -
    - -
    -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tag/wxwidgets.html.gz b/tag/wxwidgets.html.gz new file mode 100644 index 0000000..2c35bbc Binary files /dev/null and b/tag/wxwidgets.html.gz differ diff --git a/tags.html b/tags.html index 433d75b..2b6821b 100644 --- a/tags.html +++ b/tags.html @@ -1,52 +1,9 @@ - - - - - - - - Блог 529 - Tags - - - - - - - - - - - - - - - - Блог 529 - Tags - -
    -

    Tags for Блог 529

  • BGL (1)
  • -
  • блог (1)
  • -
  • бот (1)
  • -
  • c++ (2)
  • -
  • Go (1)
  • -
  • математика (1)
  • -
  • open source (1)
  • -
  • проект (3)
  • -
  • Project Euler (1)
  • -
  • шахматы (1)
  • -
  • wallabag (1)
  • -
  • wxWidgets (1)
  • -
    - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tags.html.gz b/tags.html.gz new file mode 100644 index 0000000..c18c8a9 Binary files /dev/null and b/tags.html.gz differ diff --git a/theme/css/blog.css b/theme/css/blog.css index 8fc0242..146eb5d 100644 --- a/theme/css/blog.css +++ b/theme/css/blog.css @@ -1,173 +1 @@ -body { - color: #272822; - background-color: #eeeeee; - font-family: "PT Sans", sans-serif; } - -#sidebar { - background: url("../img/stressed_linen/stressed_linen.png") repeat; - position: fixed; - left: 0; - bottom: 0; - right: auto; - top: 0; - width: 25%; - min-width: 200px; - padding-left: 8px; - padding-right: 8px; - color: #eeeeee; } - #sidebar a { - color: #eeeeee; - text-decoration: none; } - -#site-title { - font-family: "Philosopher", sans-serif; - font-size: 2em; - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - -ms-transition: all 0.3s; - -o-transition: all 0.3s; - transition: all 0.3s; } - #site-title:hover { - color: #38c5c5; } - -#site-desc { - font-size: 1.3em; - padding: 0 6px; } - -#post-container { - position: relative; - margin-left: 27%; - max-width: 800px; - overflow-wrap: break-word; } - -#nav-links { - list-style: none; - padding: 0; - font-family: "Philosopher", sans-serif; - font-size: 2em; - font-variant: bold; } - #nav-links li { - margin: 12px 12px; } - #nav-links a { - padding: 0 24px; - border-radius: 24px; - display: inline-block; - border: 3px solid #eeeeee; - line-height: 1.8em; - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - -ms-transition: all 0.3s; - -o-transition: all 0.3s; - transition: all 0.3s; } - #nav-links a:hover { - border-color: #38c5c5; - color: #38c5c5; } - -#post-list { - list-style: none; } - -.post-entry { - margin: 3em 0; } - -.entry-header { - font-family: "Forum", sans-serif; - font-variant: bold; } - .entry-header a { - color: #272822; - text-decoration: none; } - .entry-header a:hover { - color: #38c5c5; - text-decoration: none; } - .entry-header time { - color: #8e927e; } - .entry-header h1 { - margin: 0.5em 0; } - -.post-content a { - color: #38c5c5; } -.post-content img { - display: block; - margin: 0 auto; - max-width: 80%; } -.post-content blockquote { - font-style: italic; } -.post-content pre { - font-size: 14px; - background-color: #e6e6e6; - padding: 10px; - margin: 10px; - overflow: auto; - font-family: "Ubuntu Mono", monospace; } - -.post-meta a { - font-style: italic; - color: #38c5c5; } - -.paginator { - text-align: center; - padding: 12px; - font-size: 1.4em; - font-family: "Oswald", sans-serif; } - .paginator a { - color: #272822; - text-decoration: none; } - .paginator a:hover { - color: #38c5c5; } - -/* ========================================================================== - EXAMPLE Media Queries for Responsive Design. - Theses examples override the primary ('mobile first') styles. - Modify as content requires. - ========================================================================== */ -@media only screen and (max-width: 800px) { - /* Style adjustments for viewports that meet the condition */ - #sidebar { - position: static; - width: 100%; - padding: 0; } - - #post-container { - width: 100%; - position: static; - margin: 0; - padding: 0px; } - - #post-list { - padding: 0; } - - #nav-links { - text-align: center; - padding: 0; - font-size: 1.8em; } - #nav-links li { - display: inline; - margin-top: 6px; } - #nav-links a { - display: inline-block; } - - #site-title h1 { - margin-top: 0; } - - #site-header { - margin-left: 18px; } - - .side-shadow { - -webkit-box-shadow: 0 3px 12px 3px #8e927e; - -moz-box-shadow: 0 3px 12px 3px #8e927e; - box-shadow: 0 3px 12px 3px #8e927e; } - - .post-entry { - padding: 0 12px; } } -@media only screen and (max-width: 640px) { - #nav-links { - font-size: 1.1em; } - - #site-desc { - font-size: 1em; } - - #site-title h1 { - font-size: 1.3em; - margin: 0.1em 0px; } - - #site-info { - font-size: 0.6em; } } +body{color:#272822;background-color:#eee;font-family:"PT Sans",sans-serif}#sidebar{background:url("../img/stressed_linen/stressed_linen.png") repeat;position:fixed;left:0;bottom:0;right:auto;top:0;width:25%;min-width:200px;padding-left:8px;padding-right:8px;color:#eee}#sidebar a{color:#eee;text-decoration:none}#site-title{font-family:"Philosopher",sans-serif;font-size:2em;-webkit-transition:all .3s;-moz-transition:all .3s;-ms-transition:all .3s;-o-transition:all .3s;transition:all .3s}#site-title:hover{color:#38c5c5}#site-desc{font-size:1.3em;padding:0 6px}#post-container{position:relative;margin-left:27%;max-width:800px;overflow-wrap:break-word}#nav-links{list-style:none;padding:0;font-family:"Philosopher",sans-serif;font-size:2em;font-variant:bold}#nav-links li{margin:12px 12px}#nav-links a{padding:0 24px;border-radius:24px;display:inline-block;border:3px solid #eee;line-height:1.8em;-webkit-transition:all .3s;-moz-transition:all .3s;-ms-transition:all .3s;-o-transition:all .3s;transition:all .3s}#nav-links a:hover{border-color:#38c5c5;color:#38c5c5}#post-list{list-style:none}.post-entry{margin:3em 0}.entry-header{font-family:"Forum",sans-serif;font-variant:bold}.entry-header a{color:#272822;text-decoration:none}.entry-header a:hover{color:#38c5c5;text-decoration:none}.entry-header time{color:#8e927e}.entry-header h1{margin:.5em 0}.post-content a{color:#38c5c5}.post-content img{display:block;margin:0 auto;max-width:80%}.post-content blockquote{font-style:italic}.post-content pre{font-size:14px;background-color:#e6e6e6;padding:10px;margin:10px;overflow:auto;font-family:"Ubuntu Mono",monospace}.post-meta a{font-style:italic;color:#38c5c5}.paginator{text-align:center;padding:12px;font-size:1.4em;font-family:"Oswald",sans-serif}.paginator a{color:#272822;text-decoration:none}.paginator a:hover{color:#38c5c5}@media only screen and (max-width:800px){#sidebar{position:static;width:100%;padding:0}#post-container{width:100%;position:static;margin:0;padding:0}#post-list{padding:0}#nav-links{text-align:center;padding:0;font-size:1.8em}#nav-links li{display:inline;margin-top:6px}#nav-links a{display:inline-block}#site-title h1{margin-top:0}#site-header{margin-left:18px}.side-shadow{-webkit-box-shadow:0 3px 12px 3px #8e927e;-moz-box-shadow:0 3px 12px 3px #8e927e;box-shadow:0 3px 12px 3px #8e927e}.post-entry{padding:0 12px}}@media only screen and (max-width:640px){#nav-links{font-size:1.1em}#site-desc{font-size:1em}#site-title h1{font-size:1.3em;margin:.1em 0}#site-info{font-size:.6em}} \ No newline at end of file diff --git a/theme/css/blog.css.gz b/theme/css/blog.css.gz new file mode 100644 index 0000000..c336f52 Binary files /dev/null and b/theme/css/blog.css.gz differ diff --git a/theme/css/blog.css~.gz b/theme/css/blog.css~.gz new file mode 100644 index 0000000..ba54749 Binary files /dev/null and b/theme/css/blog.css~.gz differ diff --git a/theme/css/font-awesome.min.css b/theme/css/font-awesome.min.css index d4e45b3..04fb0ed 100644 --- a/theme/css/font-awesome.min.css +++ b/theme/css/font-awesome.min.css @@ -19,15 +19,4 @@ * Email: dave@davegandy.com * Twitter: http://twitter.com/fortaweso_me * Work: Lead Product Designer @ http://kyruus.com - */ - -@font-face{ - font-family:'FontAwesome'; - src:url('../font/fontawesome-webfont.eot?v=3.0.1'); - src:url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'), - url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'), - url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype'); - font-weight:normal; - font-style:normal } - -[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}a [class^="icon-"],a [class*=" icon-"]{display:inline-block}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}.btn [class^="icon-"],.nav [class^="icon-"],.btn [class*=" icon-"],.nav [class*=" icon-"]{display:inline}.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}li [class^="icon-"],.nav li [class^="icon-"],li [class*=" icon-"],.nav li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}li [class^="icon-"].icon-large,.nav li [class^="icon-"].icon-large,li [class*=" icon-"].icon-large,.nav li [class*=" icon-"].icon-large{width:1.5625em}ul.icons{list-style-type:none;text-indent:-0.75em}ul.icons li [class^="icon-"],ul.icons li [class*=" icon-"]{width:.75em}.icon-muted{color:#eee}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}@-moz-document url-prefix(){.icon-spin{height:.9em}.btn .icon-spin{height:auto}.icon-spin.icon-large{height:1.25em}.btn .icon-spin.icon-large{height:.75em}}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope-alt:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"} \ No newline at end of file + */@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.0.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype');font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}a [class^="icon-"],a [class*=" icon-"]{display:inline-block}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}.btn [class^="icon-"],.nav [class^="icon-"],.btn [class*=" icon-"],.nav [class*=" icon-"]{display:inline}.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}li [class^="icon-"],.nav li [class^="icon-"],li [class*=" icon-"],.nav li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}li [class^="icon-"].icon-large,.nav li [class^="icon-"].icon-large,li [class*=" icon-"].icon-large,.nav li [class*=" icon-"].icon-large{width:1.5625em}ul.icons{list-style-type:none;text-indent:-.75em}ul.icons li [class^="icon-"],ul.icons li [class*=" icon-"]{width:.75em}.icon-muted{color:#eee}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}@-moz-document url-prefix(){.icon-spin{height:.9em}.btn .icon-spin{height:auto}.icon-spin.icon-large{height:1.25em}.btn .icon-spin.icon-large{height:.75em}}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope-alt:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"} \ No newline at end of file diff --git a/theme/css/font-awesome.min.css.gz b/theme/css/font-awesome.min.css.gz new file mode 100644 index 0000000..626b95b Binary files /dev/null and b/theme/css/font-awesome.min.css.gz differ diff --git a/theme/css/github.css b/theme/css/github.css index dc60655..7bd4389 100644 --- a/theme/css/github.css +++ b/theme/css/github.css @@ -1,61 +1 @@ -.hll { background-color: #ffffcc } -.c { color: #999988; font-style: italic } /* Comment */ -.err { color: #a61717; background-color: #e3d2d2 } /* Error */ -.k { color: #000000; font-weight: bold } /* Keyword */ -.o { color: #000000; font-weight: bold } /* Operator */ -.cm { color: #999988; font-style: italic } /* Comment.Multiline */ -.cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */ -.c1 { color: #999988; font-style: italic } /* Comment.Single */ -.cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ -.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ -.ge { color: #000000; font-style: italic } /* Generic.Emph */ -.gr { color: #aa0000 } /* Generic.Error */ -.gh { color: #999999 } /* Generic.Heading */ -.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ -.go { color: #888888 } /* Generic.Output */ -.gp { color: #555555 } /* Generic.Prompt */ -.gs { font-weight: bold } /* Generic.Strong */ -.gu { color: #aaaaaa } /* Generic.Subheading */ -.gt { color: #aa0000 } /* Generic.Traceback */ -.kc { color: #000000; font-weight: bold } /* Keyword.Constant */ -.kd { color: #000000; font-weight: bold } /* Keyword.Declaration */ -.kn { color: #000000; font-weight: bold } /* Keyword.Namespace */ -.kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */ -.kr { color: #000000; font-weight: bold } /* Keyword.Reserved */ -.kt { color: #445588; font-weight: bold } /* Keyword.Type */ -.m { color: #009999 } /* Literal.Number */ -.s { color: #d01040 } /* Literal.String */ -.na { color: #008080 } /* Name.Attribute */ -.nb { color: #0086B3 } /* Name.Builtin */ -.nc { color: #445588; font-weight: bold } /* Name.Class */ -.no { color: #008080 } /* Name.Constant */ -.nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */ -.ni { color: #800080 } /* Name.Entity */ -.ne { color: #990000; font-weight: bold } /* Name.Exception */ -.nf { color: #990000; font-weight: bold } /* Name.Function */ -.nl { color: #990000; font-weight: bold } /* Name.Label */ -.nn { color: #555555 } /* Name.Namespace */ -.nt { color: #000080 } /* Name.Tag */ -.nv { color: #008080 } /* Name.Variable */ -.ow { color: #000000; font-weight: bold } /* Operator.Word */ -.w { color: #bbbbbb } /* Text.Whitespace */ -.mf { color: #009999 } /* Literal.Number.Float */ -.mh { color: #009999 } /* Literal.Number.Hex */ -.mi { color: #009999 } /* Literal.Number.Integer */ -.mo { color: #009999 } /* Literal.Number.Oct */ -.sb { color: #d01040 } /* Literal.String.Backtick */ -.sc { color: #d01040 } /* Literal.String.Char */ -.sd { color: #d01040 } /* Literal.String.Doc */ -.s2 { color: #d01040 } /* Literal.String.Double */ -.se { color: #d01040 } /* Literal.String.Escape */ -.sh { color: #d01040 } /* Literal.String.Heredoc */ -.si { color: #d01040 } /* Literal.String.Interpol */ -.sx { color: #d01040 } /* Literal.String.Other */ -.sr { color: #009926 } /* Literal.String.Regex */ -.s1 { color: #d01040 } /* Literal.String.Single */ -.ss { color: #990073 } /* Literal.String.Symbol */ -.bp { color: #999999 } /* Name.Builtin.Pseudo */ -.vc { color: #008080 } /* Name.Variable.Class */ -.vg { color: #008080 } /* Name.Variable.Global */ -.vi { color: #008080 } /* Name.Variable.Instance */ -.il { color: #009999 } /* Literal.Number.Integer.Long */ +.hll{background-color:#ffc}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{color:#000;font-weight:bold}.o{color:#000;font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold;font-style:italic}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.ge{color:#000;font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:#aaa}.gt{color:#a00}.kc{color:#000;font-weight:bold}.kd{color:#000;font-weight:bold}.kn{color:#000;font-weight:bold}.kp{color:#000;font-weight:bold}.kr{color:#000;font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d01040}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.nd{color:#3c5d5d;font-weight:bold}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nl{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{color:#000;font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d01040}.sc{color:#d01040}.sd{color:#d01040}.s2{color:#d01040}.se{color:#d01040}.sh{color:#d01040}.si{color:#d01040}.sx{color:#d01040}.sr{color:#009926}.s1{color:#d01040}.ss{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099} \ No newline at end of file diff --git a/theme/css/github.css.gz b/theme/css/github.css.gz new file mode 100644 index 0000000..da42082 Binary files /dev/null and b/theme/css/github.css.gz differ diff --git a/theme/css/landing.css b/theme/css/landing.css index b964342..e89519e 100644 --- a/theme/css/landing.css +++ b/theme/css/landing.css @@ -1,62 +1 @@ -body { - background-color: #eeeeee; } - -#content-box { - background: url("../img/stressed_linen/stressed_linen.png") repeat; - padding: 12px; - margin: 5% auto; - color: #eeeeee; - font-family: "PT Sans", sans-serif; - font-size: 1.2em; - border-bottom: 2px solid #38c5c5; } - -#intro-header { - font-family: "Forum", sans-serif; - text-align: center; } - #intro-header h1 { - font-size: 3.5em; - margin-top: 12px; - margin-bottom: 12px; } - -.centered-nav { - text-align: center; - padding: 0; } - .centered-nav li { - display: inline; } - .centered-nav a { - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - -ms-transition: all 0.3s; - -o-transition: all 0.3s; - transition: all 0.3s; - display: inline-block; - color: #eeeeee; - text-decoration: none; } - .centered-nav a:hover { - color: #38c5c5; - text-shadow: 0 0 12px #8e927e; } - -#nav-links { - font-family: "Forum", sans-serif; - font-size: 1.8em; } - #nav-links a { - margin: 0 6px; - padding: 3px; } - -#nav-services li { - margin: 6px; } - -.svc-badge { - font-size: 36px; - width: 50px; - display: inline-block; } - -#contact-form { - text-align: center; } - -#contact-methods { - margin-top: 2em; } - #contact-methods li { - margin: 0 24px; } - #contact-methods li h3 { - margin: 0.3em 0; } +body{background-color:#eee}#content-box{background:url("../img/stressed_linen/stressed_linen.png") repeat;padding:12px;margin:5% auto;color:#eee;font-family:"PT Sans",sans-serif;font-size:1.2em;border-bottom:2px solid #38c5c5}#intro-header{font-family:"Forum",sans-serif;text-align:center}#intro-header h1{font-size:3.5em;margin-top:12px;margin-bottom:12px}.centered-nav{text-align:center;padding:0}.centered-nav li{display:inline}.centered-nav a{-webkit-transition:all .3s;-moz-transition:all .3s;-ms-transition:all .3s;-o-transition:all .3s;transition:all .3s;display:inline-block;color:#eee;text-decoration:none}.centered-nav a:hover{color:#38c5c5;text-shadow:0 0 12px #8e927e}#nav-links{font-family:"Forum",sans-serif;font-size:1.8em}#nav-links a{margin:0 6px;padding:3px}#nav-services li{margin:6px}.svc-badge{font-size:36px;width:50px;display:inline-block}#contact-form{text-align:center}#contact-methods{margin-top:2em}#contact-methods li{margin:0 24px}#contact-methods li h3{margin:.3em 0} \ No newline at end of file diff --git a/theme/css/landing.css.gz b/theme/css/landing.css.gz new file mode 100644 index 0000000..bfcc43d Binary files /dev/null and b/theme/css/landing.css.gz differ diff --git a/theme/css/landing.css~.gz b/theme/css/landing.css~.gz new file mode 100644 index 0000000..511ef55 Binary files /dev/null and b/theme/css/landing.css~.gz differ diff --git a/theme/css/main.css b/theme/css/main.css index ee1c48d..770a8f6 100644 --- a/theme/css/main.css +++ b/theme/css/main.css @@ -1,248 +1 @@ -/* - * HTML5 Boilerplate - * - * What follows is the result of much research on cross-browser styling. - * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, - * Kroc Camen, and the H5BP dev community and team. - */ -/* ========================================================================== - Base styles: opinionated defaults - ========================================================================== */ -html, -button, -input, -select, -textarea { - color: #222; } - -body { - font-size: 1em; - line-height: 1.4; } - -/* - * Remove text-shadow in selection highlight: h5bp.com/i - * These selection declarations have to be separate. - * Customize the background color to match your design. - */ -::-moz-selection { - background: #b3d4fc; - text-shadow: none; } - -::selection { - background: #b3d4fc; - text-shadow: none; } - -/* - * A better looking default horizontal rule - */ -hr { - display: block; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; } - -/* - * Remove the gap between images and the bottom of their containers: h5bp.com/i/440 - */ -img { - vertical-align: middle; } - -/* - * Remove default fieldset styles. - */ -fieldset { - border: 0; - margin: 0; - padding: 0; } - -/* - * Allow only vertical resizing of textareas. - */ -textarea { - resize: vertical; } - -/* ========================================================================== - Chrome Frame prompt - ========================================================================== */ -.chromeframe { - margin: 0.2em 0; - background: #ccc; - color: #000; - padding: 0.2em 0; } - -/* ========================================================================== - Author's custom styles - ========================================================================== */ -#site-info { - margin-top: 1.5em; - font-size: 0.7em; - text-align: center; - color: #38c5c5; } - #site-info a { - color: #eeeeee; } - -.side-shadow { - -webkit-box-shadow: 3px 0px 8px 0px #8e927e; - -moz-box-shadow: 3px 0px 8px 0px #8e927e; - box-shadow: 3px 0px 8px 0px #8e927e; } - -.angle-shadow { - -webkit-box-shadow: 6px 6px 8px 3px #8e927e; - -moz-box-shadow: 6px 6px 8px 3px #8e927e; - box-shadow: 6px 6px 8px 3px #8e927e; } - -/* ========================================================================== - Helper classes - ========================================================================== */ -/* - * Image replacement - */ -.ir { - background-color: transparent; - border: 0; - overflow: hidden; - /* IE 6/7 fallback */ - *text-indent: -9999px; } - -.ir:before { - content: ""; - display: block; - width: 0; - height: 150%; } - -/* - * Hide from both screenreaders and browsers: h5bp.com/u - */ -.hidden { - display: none !important; - visibility: hidden; } - -/* - * Hide only visually, but have it available for screenreaders: h5bp.com/v - */ -.visuallyhidden { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; } - -/* - * Extends the .visuallyhidden class to allow the element to be focusable - * when navigated to via the keyboard: h5bp.com/p - */ -.visuallyhidden.focusable:active, -.visuallyhidden.focusable:focus { - clip: auto; - height: auto; - margin: 0; - overflow: visible; - position: static; - width: auto; } - -/* - * Hide visually and from screenreaders, but maintain layout - */ -.invisible { - visibility: hidden; } - -/* - * Clearfix: contain floats - * - * For modern browsers - * 1. The space content is one way to avoid an Opera bug when the - * `contenteditable` attribute is included anywhere else in the document. - * Otherwise it causes space to appear at the top and bottom of elements - * that receive the `clearfix` class. - * 2. The use of `table` rather than `block` is only necessary if using - * `:before` to contain the top-margins of child elements. - */ -.clearfix:before, -.clearfix:after { - content: " "; - /* 1 */ - display: table; - /* 2 */ } - -.clearfix:after { - clear: both; } - -/* - * For IE 6/7 only - * Include this rule to trigger hasLayout and contain floats. - */ -.clearfix { - *zoom: 1; } - -/* ========================================================================== - EXAMPLE Media Queries for Responsive Design. - Theses examples override the primary ('mobile first') styles. - Modify as content requires. - ========================================================================== */ -@media only screen and (min-width: 35em) { - /* Style adjustments for viewports that meet the condition */ } -@media print, (-o-min-device-pixel-ratio: 5 / 4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - /* Style adjustments for high resolution devices */ } -/* ========================================================================== - Print styles. - Inlined to avoid required HTTP connection: h5bp.com/r - ========================================================================== */ -@media print { - * { - background: transparent !important; - color: #000 !important; - /* Black prints faster: h5bp.com/s */ - box-shadow: none !important; - text-shadow: none !important; } - - a, - a:visited { - text-decoration: underline; } - - a[href]:after { - content: " (" attr(href) ")"; } - - abbr[title]:after { - content: " (" attr(title) ")"; } - - /* - * Don't show links for images, or javascript/internal links - */ - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; } - - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; } - - thead { - display: table-header-group; - /* h5bp.com/t */ } - - tr, - img { - page-break-inside: avoid; } - - img { - max-width: 100% !important; } - - @page { - margin: 0.5cm; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } } +html,button,input,select,textarea{color:#222}body{font-size:1em;line-height:1.4}::-moz-selection{background:#b3d4fc;text-shadow:none}::selection{background:#b3d4fc;text-shadow:none}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}img{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}#site-info{margin-top:1.5em;font-size:.7em;text-align:center;color:#38c5c5}#site-info a{color:#eee}.side-shadow{-webkit-box-shadow:3px 0 8px 0 #8e927e;-moz-box-shadow:3px 0 8px 0 #8e927e;box-shadow:3px 0 8px 0 #8e927e}.angle-shadow{-webkit-box-shadow:6px 6px 8px 3px #8e927e;-moz-box-shadow:6px 6px 8px 3px #8e927e;box-shadow:6px 6px 8px 3px #8e927e}.ir{background-color:transparent;border:0;overflow:hidden;*text-indent:-9999px}.ir:before{content:"";display:block;width:0;height:150%}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.clearfix{*zoom:1}@media print,(-o-min-device-pixel-ratio:5 /@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}} \ No newline at end of file diff --git a/theme/css/main.css.gz b/theme/css/main.css.gz new file mode 100644 index 0000000..11321b5 Binary files /dev/null and b/theme/css/main.css.gz differ diff --git a/theme/css/normalize.css b/theme/css/normalize.css index 4d4d01d..143a55f 100644 --- a/theme/css/normalize.css +++ b/theme/css/normalize.css @@ -1,527 +1 @@ -/*! normalize.css v1.1.0 | MIT License | git.io/normalize */ - -/* ========================================================================== - HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/** - * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. - */ - -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. - * Known issue: no IE 6 support. - */ - -[hidden] { - display: none; -} - -/* ========================================================================== - Base - ========================================================================== */ - -/** - * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using - * `em` units. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-size: 100%; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - -ms-text-size-adjust: 100%; /* 2 */ -} - -/** - * Address `font-family` inconsistency between `textarea` and other form - * elements. - */ - -html, -button, -input, -select, -textarea { - font-family: sans-serif; -} - -/** - * Address margins handled incorrectly in IE 6/7. - */ - -body { - margin: 0; -} - -/* ========================================================================== - Links - ========================================================================== */ - -/** - * Address `outline` inconsistency between Chrome and other browsers. - */ - -a:focus { - outline: thin dotted; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* ========================================================================== - Typography - ========================================================================== */ - -/** - * Address font sizes and margins set differently in IE 6/7. - * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, - * and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -h2 { - font-size: 1.5em; - margin: 0.83em 0; -} - -h3 { - font-size: 1.17em; - margin: 1em 0; -} - -h4 { - font-size: 1em; - margin: 1.33em 0; -} - -h5 { - font-size: 0.83em; - margin: 1.67em 0; -} - -h6 { - font-size: 0.67em; - margin: 2.33em 0; -} - -/** - * Address styling not present in IE 7/8/9, Safari 5, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -blockquote { - margin: 1em 40px; -} - -/** - * Address styling not present in Safari 5 and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address differences between Firefox and other browsers. - * Known issue: no IE 6/7 normalization. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Address styling not present in IE 6/7/8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address margins set differently in IE 6/7. - */ - -p, -pre { - margin: 1em 0; -} - -/** - * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - _font-family: 'courier new', monospace; - font-size: 1em; -} - -/** - * Improve readability of pre-formatted text in all browsers. - */ - -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -/** - * Address CSS quotes not supported in IE 6/7. - */ - -q { - quotes: none; -} - -/** - * Address `quotes` property not supported in Safari 4. - */ - -q:before, -q:after { - content: ''; - content: none; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== - Lists - ========================================================================== */ - -/** - * Address margins set differently in IE 6/7. - */ - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -/** - * Address paddings set differently in IE 6/7. - */ - -menu, -ol, -ul { - padding: 0 0 0 40px; -} - -/** - * Correct list images handled incorrectly in IE 7. - */ - -nav ul, -nav ol { - list-style: none; - list-style-image: none; -} - -/* ========================================================================== - Embedded content - ========================================================================== */ - -/** - * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. - * 2. Improve image quality when scaled in IE 7. - */ - -img { - border: 0; /* 1 */ - -ms-interpolation-mode: bicubic; /* 2 */ -} - -/** - * Correct overflow displayed oddly in IE 9. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== - Figures - ========================================================================== */ - -/** - * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. - */ - -figure { - margin: 0; -} - -/* ========================================================================== - Forms - ========================================================================== */ - -/** - * Correct margin displayed oddly in IE 6/7. - */ - -form { - margin: 0; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct color not being inherited in IE 6/7/8/9. - * 2. Correct text not wrapping in Firefox 3. - * 3. Correct alignment displayed oddly in IE 6/7. - */ - -legend { - border: 0; /* 1 */ - padding: 0; - white-space: normal; /* 2 */ - *margin-left: -7px; /* 3 */ -} - -/** - * 1. Correct font size not being inherited in all browsers. - * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, - * and Chrome. - * 3. Improve appearance and consistency in all browsers. - */ - -button, -input, -select, -textarea { - font-size: 100%; /* 1 */ - margin: 0; /* 2 */ - vertical-align: baseline; /* 3 */ - *vertical-align: middle; /* 3 */ -} - -/** - * Address Firefox 3+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -button, -input { - line-height: normal; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. - * Correct `select` style inheritance in Firefox 4+ and Opera. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - * 4. Remove inner spacing in IE 7 without affecting normal text inputs. - * Known issue: inner spacing remains in IE 6. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ - *overflow: visible; /* 4 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * 1. Address box sizing set to content-box in IE 8/9. - * 2. Remove excess padding in IE 8/9. - * 3. Remove excess padding in IE 7. - * Known issue: excess padding remains in IE 6. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ - *height: 13px; /* 3 */ - *width: 13px; /* 3 */ -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Remove inner padding and border in Firefox 3+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * 1. Remove default vertical scrollbar in IE 6/7/8/9. - * 2. Improve readability and alignment in all browsers. - */ - -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== - Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} +/*! normalize.css v1.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} \ No newline at end of file diff --git a/theme/css/normalize.css.gz b/theme/css/normalize.css.gz new file mode 100644 index 0000000..d8069d7 Binary files /dev/null and b/theme/css/normalize.css.gz differ diff --git a/theme/css/sass/_vars.scss.gz b/theme/css/sass/_vars.scss.gz new file mode 100644 index 0000000..db74b2b Binary files /dev/null and b/theme/css/sass/_vars.scss.gz differ diff --git a/theme/css/sass/blog.scss.gz b/theme/css/sass/blog.scss.gz new file mode 100644 index 0000000..49ab81b Binary files /dev/null and b/theme/css/sass/blog.scss.gz differ diff --git a/theme/css/sass/landing.scss.gz b/theme/css/sass/landing.scss.gz new file mode 100644 index 0000000..e1e5646 Binary files /dev/null and b/theme/css/sass/landing.scss.gz differ diff --git a/theme/css/sass/main.scss.gz b/theme/css/sass/main.scss.gz new file mode 100644 index 0000000..9dae82e Binary files /dev/null and b/theme/css/sass/main.scss.gz differ diff --git a/theme/font/FontAwesome.otf.gz b/theme/font/FontAwesome.otf.gz new file mode 100644 index 0000000..2518d31 Binary files /dev/null and b/theme/font/FontAwesome.otf.gz differ diff --git a/theme/font/fontawesome-webfont.eot.gz b/theme/font/fontawesome-webfont.eot.gz new file mode 100644 index 0000000..0224d18 Binary files /dev/null and b/theme/font/fontawesome-webfont.eot.gz differ diff --git a/theme/font/fontawesome-webfont.svg.gz b/theme/font/fontawesome-webfont.svg.gz new file mode 100644 index 0000000..6ceaa65 Binary files /dev/null and b/theme/font/fontawesome-webfont.svg.gz differ diff --git a/theme/font/fontawesome-webfont.ttf.gz b/theme/font/fontawesome-webfont.ttf.gz new file mode 100644 index 0000000..81b6a50 Binary files /dev/null and b/theme/font/fontawesome-webfont.ttf.gz differ diff --git a/theme/font/fontawesome-webfont.woff.gz b/theme/font/fontawesome-webfont.woff.gz new file mode 100644 index 0000000..f0bf304 Binary files /dev/null and b/theme/font/fontawesome-webfont.woff.gz differ diff --git a/theme/img/.gitignore.gz b/theme/img/.gitignore.gz new file mode 100644 index 0000000..d4b9926 Binary files /dev/null and b/theme/img/.gitignore.gz differ diff --git a/theme/img/stressed_linen/readme.txt.gz b/theme/img/stressed_linen/readme.txt.gz new file mode 100644 index 0000000..54e3782 Binary files /dev/null and b/theme/img/stressed_linen/readme.txt.gz differ diff --git a/theme/js/main.js.gz b/theme/js/main.js.gz new file mode 100644 index 0000000..3f06499 Binary files /dev/null and b/theme/js/main.js.gz differ diff --git a/theme/js/vendor/modernizr-2.6.2.min.js.gz b/theme/js/vendor/modernizr-2.6.2.min.js.gz new file mode 100644 index 0000000..f28ef60 Binary files /dev/null and b/theme/js/vendor/modernizr-2.6.2.min.js.gz differ