На странице: 24 48 96

Большая Тёрка / Мысли /

programmingX


ustimenko

SQL formatter that really works

SQL , programming

http://sqlformat.appspot.com/

Other gogol «top» results are just sukin near.

Atrinax

Как учить детей программированию: Kodu Game Lab теперь доступен для PC

fuse, habr, programming, kids, microsoft

Беспардонно свиснуто с Хабра.

В Майкрософт задумываются над проблемами обучения детей, в частности, уже писалось про проект Kodu Game Lab.

Kodu – это интерактивная среда создания трехмерных игр, доступная одновременно на Xbox 360 и на ПК. Я решил написать о ней подробнее, поскольку начиная с сегодняшнего для любой желающий может скачать и попробовать версию для ПК.

image image


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

Внутри мира живут объекты – это могут быть яйцеголовые “коду”, яблоки, деревья, пушки, снаряды и т.д. Объекты уже наделены некоторым поведением – например, пушка, добавленная в игровой мир, может вдруг сама по себе опрокидываться на спину и “улыбаться”. Другие действия можете добавлять вы – например, при нажатии на пробел можно попросить пушку “выстрелить” снарядом, а при нажатии на стрелки – повернуться. Снаряд, по умолчанию, столкнувшись с каким-то объектом взорвётся, уменьшив “здоровье” этого объекта. Когда здоровье уменьшится до нуля – объект сам умрёт.

image image

Всё это заложенная по умолчанию функциональность – поэтому чтобы получить работающую игру, надо не так много – поместить объекты в мир и наделить минимальным поведением. В ответ на события (нажатие клавиш, перемещение мыши, столкновение и т.д.) можно просить объекты исчезать, испытывать эмоции (да-да, “улыбнуться” – это примитивное действие, и разные объекты делаю его по-разному!), перемещаться, исчезать, или переходить в новое состояние (которое в коду называется страницей).

imageimage

Приведённые скриншоты демонстрируют весь процесс создания игры-стрелялки на Коду: создаём пустой мир, добавляем объекты (дерево, затем пушку), модифицируем свойства пушки, добавляя реакцию на клавиши – вот, собственно, и вся игра!

А более подробно процесс показан на видео (рекомендую смотреть на YouTube в HD):

Как вы думаете – насколько такой подход к созданию игр близок к программированию? Можно ли это рассматривать как обучение программированию, или скорее как способ перетащить детей от пассивной роли игрока к более творческому процессу создания игры? Именно это, как мне кажется, самое главное, что позволяет сделать Kodu – показать, что компьютер может использоваться для создания чего-то нового, для воплощения в жизнь своих идей. Конкретные технологии, языки программирования и библиотеки всё время будут меняться, но этот принцип – свобода творчества, возможность создания виртуального творения своими руками – будет оставаться всегда.

15 комментариев

Un10R

Гимн С (Write in C - Let it be Cover - Piano)

programming, IT , Программирование,

For all the IT‑People and C‑Programmers out there. If you heard this song you will never try to use programming languages other than C again^^ I don't know who wrote the lyrics but I like them :D
6 комментариев

Baka

PHP. Как много в этом слове!

programming, Тупость, lulz, коллайдер

Для начала — работы на конкурс самой долбоебической валидации данных формы. Проходит под грифом «без комментариев».

1. Рубрика «валидация e‑mail строгонах по RFC»:

function checkemail ($email) {
$email = trim ($email);
$pos1 = strpos ($email, "@");
$pos2 = strpos ($email, ".");
if (!$pos1 || !$pos2) {
return false;
} else {
return true;
}
}

[CUT]CLICK HERE FOR MOAR LULZ[/CUT]

2. Рубрика «ачотакоерегэкспйобана»:

$account_allowed_chars = $account_allowed_symbols . «0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ»;
$acct_username = trim($_POST['acct_username']);
$length1 = strlen($acct_username);
$length2 = strlen($account_allowed_chars);
for($count1 = 0; $count1 < $length1; $count1++) {
for($count2 = 0; $count2 < $length2; $count2++) {
if ($acct_username[$count1] == $account_allowed_chars[$count2]) {
$goodchar = true;
}
}
if (!$goodchar) {
error(0,str_replace("[[allowed_chars]]",$account_allowed_symbols,$language['invalidname']),"");
}
$goodchar = false;
}

3. Немного фалломорфирующей магии:

// The next step is to make sure the password is at least 3 characters long, and then we hash it
if (trim($_POST['password1']) == trim($_POST['password2']))
if (strlen(trim($_POST['password1'])) > 5)

4. А вот так охрененно нужно от SQL Injection защищаться:

SELECT * FROM `blahblah` WHERE acct_email = \«" . trim($_POST['acct_email']) . »\";

Нахер люди мозг парили, писали всякие нипанятные addslashes() да mysql_real_escape_string() — ковычги‑та надежнее.

З.Ы. И это при том, что уже пару‑тройку раз до этого работали с acct_email. Но, видать, памяти жалко в рег‑скрипте — пральна, нахера ее выделять лишний раз под удобочитаемую переменную, значение которой прошло валидацию, когда можно из поста подергать. У нас же есть суперглобальные массивы!

5. Рубрика «лолштобля?»:

if ($_POST['acct_email'] && $_POST['acct_email'] <> "")

6. Немного верстки:

<P align="center"><P align="center"><a rel=«nofollow» href="http://www.blahblah.org/"><img src=«themes/blahblah/blahblah.jpg» width=«675» height=«87» border="0"></a></P>
<P align=«center» class="errortext"><b>[[lang_error]] [[errormsg]]</b></P>
<P align="center">[[footer]]</P>

P.S. И — да! Это все в одном скрипте! Вебдев, учитесь xD


Baka

Debian bug #477454. Избранные моменты.

упячка, lulz, programming

Багрепорт:
Date: Wed, 23 Apr 2008 12:20:35 +0200

Hi,
since SVN revision r4027 quodlibet's source code is personally insulting
me, probably as reaction of Debian bug #421167 which was caused by a
mistake on my side:

===================================================================
--- player.py (Revision 4026)
+++ player.py (Revision 4027)
@@ -287,7 +287,9 @@
def init(pipeline, librarian):
gst.debug_set_default_threshold(gst.LEVEL_ERROR)
- if gst.element_make_from_uri(gst.URI_SRC, «file://», "«):
+ if gst.element_make_from_uri(
+ gst.URI_SRC,
+ „file:///Sebastian/Droge/please/choke/on/a/bucket/of/cocks“, »"):

daniel@bert:~/1/quodlibet‑1.x$ svn log -r 4026:4027
------------------------------------------------------------------------
r4027 | piman | 2007–04–27 05:17:05 +0200 (Fr, 27 Apr 2007) | 1 line
player.init: Give a fake filename to trick GStreamer 0.10.12's filesrc.
------------------------------------------------------------------------

[CUT]CLICK ME FOR SURPRISING BUTTSECKS[/CUT]
Комментарии: > I agree with Andreas Barth. This is bad style, and it even could result in a law suit brought upon the Debian project.
No, this can't result in a lawsuit against Debian, please take yourbullshit elsewhere, kthxbye.

I am not aware of the reason why Mr. Droge should be consuming buckets of phalli, and, even if it is appropriate for him to do so, I don't believe that personal attacks, in general, are a good programming paradigm, for any project.

This is childish bullshit and makes you all look like a bunch of rank amateurs.
If you stoop to this kind of kindergarten antics, how can I trust any of Debian's code?
Yet another reason *NOT* to use Debian.

I have to grep Debian changelogs for profanity, filter forprofanity that includes personal insults, and wonder why these packages reached the archive w/o RC bug reports being filed:
* The fucked up system release. (Fuck off Long, it is justified.)
* Changed debian/watch to match with the new fucking Sourceforge Interface. Sourceforge sucks!
* The «Fuck Me Harder» release.
* allow hunspell‑dictionary‑de in hunspells Depends:, thanks Gerfried Fucks
* Use [:lower:] in rules fule because fucking LC_COLLATE blows me.
* The «I fucking hate libtool» release. Prevent libtool from checking things we do not need at all, such as a C++ or an F77 compiler. Sigh.
* Avoid recursive brainfuck with type‑handling. This actualy fixes #297269, but we leave it for t‑h to close.
* 'wearing my «fuck redhat» shirt and loving it' release
* The upstream author is kind of a lazy bastard

Don't even get me started on the (literally) 490 occurances of the term «shit» in dpkg's source. Which are split (localized?) between a ohshite() and a ohshit() function.

Date: Tue, 22 Jul 2008 14:02:04 +0000
We believe that the bug you reported is fixed in the latest version of quodlibet, which is due to be installed in the Debian FTP archive.
Thank you for reporting the bug, which will now be closed.


Source