Skip to content

Commit

Permalink
Наш сайт на новом месте.
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Shevchenko committed Jan 14, 2015
1 parent 6dcde2e commit a19291b
Show file tree
Hide file tree
Showing 45 changed files with 3,419 additions and 20 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
.DS_Store
dist
cabal-dev
*.o
*.hi
*.chi
*.chs.h
*.*~
.virtualenv
.hsenv
.cabal-sandbox/
cabal.sandbox.config
cabal.config
_cache
_site
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ruhaskell.org
34 changes: 16 additions & 18 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
The MIT License (MIT)
Лицензия MIT (The MIT License)

Copyright (c) 2015
Все права защищены (c) 2015 "Русскоязычное сообщество Haskell-разработчиков"

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Данная лицензия разрешает лицам, получившим копию данного программного обеспечения
и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»),
безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное
право на использование, копирование, изменение, добавление, публикацию, распространение,
сублицензирование и/или продажу копий Программного Обеспечения, а также лицам, которым
предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Указанное выше уведомление об авторском праве и данные условия должны быть включены
во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ,
ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ
ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ.
НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ,
ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В ТОМ ЧИСЛЕ, ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУАЦИИ,
ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
124 changes: 122 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,122 @@
# ruhaskell
Главный сайт
ruHaskell
=========

Сайт русскоязычного сообщества Haskell-разработчиков.

Наше желание - использовать этот прекрасный язык, а не просто разговаривать о нём.<br/>
Наше стремление - объединить всех хаскелистов, говорящих по-русски.<br/>
Наша цель - увеличить долю использования Haskell в России.

### Зачем

Главной ценностью нашего сайта являются статьи. Я уверен, что каждому Haskell-энтузиасту есть что рассказать коллегам, но наши блоги разбросаны по просторам интернета, а кроме того, не всем хочется строить собственное блоговое пространство. Поэтому наш сайт представляет собой единое место обмена опытом, где каждый сможет рассказать обо всём, так или иначе связанном с разработкой на Haskell.

### Темы

Принимаются материалы, так или иначе связанные с разработкой на Haskell. Это может быть что угодно:

- Разжёвывание фундаментальной теории. Например, что-нибудь о категориях и иже с ними.
- Рассмотрение любых аспектов языка, от Hello World до монадических глубин.
- Рассказ об инструментах, связанных с Haskell. И это не только Yesod. ;-)
- Готовые практические рецепты. Что называется, копи-паст - и вперёд!
- Истории успеха или неудачи, связанные с практической разработкой на Haskell.
- Пиар программного решения, реализованного с помощью Haskell.

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

### Авторам

Статьи принимаются в формате `Markdown`, рекомендуется использовать расширение `.md`.

#### Информация о статье

В начале каждой статьи должен присутствовать информационный блок следующего вида:

```
---
author: Денис Шевченко
title: Yesod: знакомство
tags: Yesod, веб
description: Yesod - это мощный веб-фреймворк, написанный на языке Haskell.
---
```

где:

- `author` - имя автора статьи,
- `title` - название статьи,
- `tags` - один или более тематических тегов, перечисленных через запятую,
- `description` - краткое описание статьи, необходимое для обновлений в RSS.

Кроме того, существует опциональное поле `hrefToOriginal`. Если оригинал публикуемой вами статьи находится на стороннем ресурсе, просто допишите поле `hrefToOriginal` к вышеупомянутым полям:

```
hrefToOriginal: https://www.fpcomplete.com/user/astynax/basics/pine-tree
```

В результате этого в верхней правой части статьи будет размещена ссылка на оригинал.

**Внимание!** Если автором оригинала публикуемой вами статьи являетесь _не вы_ - убедитесь в том, что автор согласен на публикацию его статьи в рамках нашего ресурса.

#### Правила именования

Имя файла статьи должно быть сформировано следующим образом:

```
гггг-мм-дд-краткое-имя-статьи.md
```

Например:

```
2014-12-27-yesod-raw-deploy.md
```

URL этой статьи станет таким:

```
/posts/2014/12/27/yesod-raw-deploy.html
```

Это позволит отфильтровать статьи по дате публикации. Причём если номер месяца или дня меньше 10, то его необходимо начинать с `0`. Например, публикация от 1 мая должна быть названа так:

```
2014-05-01-yesod-raw-deploy.md
```

#### Расположение

Все Markdown-статьи хранятся в ветке `master`. Иерархически они располагаются в каталоге `posts`, но не в корне, а обязательно в своём тематическом подкаталоге. Имя подкаталога соответствует названию категории. Например, все статьи из категории `web` располагаются в каталоге `posts/web/`. Разумеется, поскольку имя каталога участвует в формировании базового URL статьи, оно должно быть английским.

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

### Локальная сборка

Вы можете собрать сайт локально. Подразумевается, что [Haskell Platform](https://www.haskell.org/platform/) у вас уже установлена. Итак:

```bash
$ git clone [email protected]:denisshevchenko/ruhaskell.git
$ cd ruhaskell
$ cabal sandbox init
$ cabal install --only-dependencies
$ ./just_build.sh
```

После этого откройте в браузере страницу `ruhaskell/_site/index.html`.

### Устав нашего монастыря

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

Трём вещам объявляется бой:

1. **оскорбления в любой форме**,
2. **явный оффтоп**,
3. **спам**.

Статьи и/или комментарии, содержащие первое, второе или третье, будут удалены. Вот и весь наш устав.

### Обратная связь

Вопросы? Предложения? Критика? Вы можете задать их в нашем [чате](https://gitter.im/denisshevchenko/haskell), на форуме (скоро будет), в [группе на Google+](https://plus.google.com/communities/117343381540538069054) или же написать [лично мне](mailto:[email protected]).

2 changes: 2 additions & 0 deletions Setup.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain
60 changes: 60 additions & 0 deletions deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

# Скрипт для для автоматического обновления сайта на GitHub Pages.

USAGE="
Запускаем так: ./deploy.sh \"Сообщение о коммите\"
Пример:
./deploy.sh \"Обновление стиля.\"
"

# При любой ошибке скрипт вылетает...
set -e

# Устанавливаем переменную, для нашего коммит-сообщения...
COMMIT_MESSAGE=$1

#if [ "$1" = "" ]
#then
# echo "А сообщение о коммите где?"
# echo "${USAGE}"
# exit 1
#fi

echo "Учитываем изменения в ветке master..."
if [ "$1" != "" ]
then
git add .
git commit -a -m "$COMMIT_MESSAGE"
git push -f origin master
fi

echo "Собираем новую версию сайта..."
./just_build.sh

echo "Копируем во временное место, предварительно удалив старое, если нужно..."
rm -rf /tmp/_site/ || true 1> /dev/null
cp -R _site /tmp/

echo "Переключаемся на ветку 'gh-pages'..."
git checkout gh-pages

echo "Копируем прямо в корень содержимое подготовленного каталога _site..."
cp -R /tmp/_site/* .

echo "Учитываем все последние новшества, если таковые имеются, и публикуем на GitHub Pages..."
git add .
if [ "$1" != "" ]
then
git commit -a -m "$COMMIT_MESSAGE"
else
git commit -a -m "Обновление после слияния."
fi

git push -f origin gh-pages

echo "Возвращаемся в мастер..."
git checkout master

echo "Готово!"
11 changes: 11 additions & 0 deletions just_build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

# Просто собираем сайт, локально.

set -e

cabal clean && cabal configure && cabal build

./dist/build/ruHaskell/ruHaskell rebuild

# После этого в корне репозитория смотрим в каталог _site.
Loading

0 comments on commit a19291b

Please sign in to comment.