Все обсуждения - Форум для программистов, программируем с умом http://www.seocoder.ru/discussions/feed.rss Thu, 23 Feb 12 05:57:23 -0500 Все обсуждения - Форум для программистов, программируем с умом RUS Python на Java. Скрипт эвента для Lineage2 http://www.seocoder.ru/discussion/258/python-na-java.-skript-eventa-dlya-lineage2 Tue, 07 Feb 2012 04:57:13 -0500 Holsten 258@/discussions
[code]import sys
from l2dot.gameserver.model.quest import State
from l2dot.gameserver.model.quest import QuestState
from l2dot.gameserver.datatables import DoorTable
from l2dot.gameserver.datatables import SkillTable
from l2dot.gameserver.model.quest.jython import QuestJython as JQuest
from l2dot.gameserver import Announcements
from l2dot import L2DatabaseFactory
from l2dot.gameserver.ai import CtrlIntention
from l2dot.util import Rnd
from java.lang import System
from l2dot.gameserver.model import L2World

qn = "5556_Base"
# =======================================
# НЕ ТРОГАЕМ
# =======================================
closed=1
res_timer=0
npc1=0
npc2=0
TEAM1 = []
TEAM2 = []
attacked = 0
annom = 1
# =======================================
# КОНФИГ
# =======================================
NAME = u"\u0417\u0430\u0445\u0432\u0430\u0442 \u0431\u0430\u0437\u044b" # Название (только английские символы)
LOC = u"\u0413\u0438\u0440\u0430\u043d" # Место, где вы поставили регистрирующего НПЦ.
REGISTER = 99998 # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [82840,149402,-3468] # Соответственно координаты, где будет появляться НПЦ
PENI = 4037 # Итем, необходимый для участия
PENI_KOL = 0 # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
LEVEL = 76 # Минимальный уровень, на котором игрок сможет принять участие в ивенте.
AFTER_RESTART = 3 # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.
TIME_FOR_WAIT = 60 # Время между ивентами в минутах
TIME_FOR_REG = 1 # Время на регистрацию в минутах
ANNOUNCE_INTERVAL = 1 # Как часто аннонсить о регистрации на ивент в минутах.
YCH_MIN = 1 # Минимальное количество участников в команде
YCH_MAX = 20 # Максимальное количество участников в команде
REWARD =[[8762,1,100],[6407,1,100]] # Список наград. Выдаётся каждому участнику. Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...[itemIdN,countN,chanceN]]
t1 =[-90915,148611,-3626] # Место телепорта 1 команды и 1 базы
t2 =[-91182,151404,-3626] # Место телепорта 2 команды и 1 базы
BASE1 = 55561 # ИД НПЦ базы №1
BASE2 = 55562 # ИД НПЦ базы №2
com1 = "Dark Team" # Название 1 команды
com2 = "Light Team" # Название 2 команды
RES_TIME = 2 # Время, через которое будут ресаться дохлые игроки - секунды.

print "3AXBAT 6A3bI:................................Initialized"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def init_LoadGlobalData(self) :
self.startQuestTimer("open", AFTER_RESTART *60000, None, None)
return

def onTalk (Self,npc,player):
global TEAM1,TEAM2,npc1,npc2,closed
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if npcId == REGISTER:
if closed<>1:
if not player.isInOlympiadMode() :
if player.getLevel() >= LEVEL:
if player.getName() not in TEAM1 + TEAM2 :
if len(TEAM1)>len(TEAM2) :
kolych = len(TEAM1)
else:
kolych = len(TEAM2)
if kolych <= YCH_MAX :<br /> if PENI_KOL<>0:
if st.getQuestItemsCount(PENI)>PENI_KOL:
st.takeItems(PENI,PENI_KOL)
if len(TEAM1)>len(TEAM2):
TEAM2.append(player.getName())
return "reg.htm"
else:
TEAM1.append(player.getName())
return "reg.htm"
else:
st.exitQuest(1)
return "nopeni.htm"
else:
if len(TEAM1)>len(TEAM2):
TEAM2.append(player.getName())
return "reg.htm"
else:
TEAM1.append(player.getName())
return "reg.htm"
else:
return "max.htm"
else:
return "yje.htm"
else:
return "lvl.htm"
else:
return "You register in olympiad games now"
else:
return "noreg.htm"
return

def onAdvEvent (self,event,npc,player):
global TEAM1,TEAM2,npc1,npc2,res_timer,annom,closed
if event == "open" :
TEAM1=[]
TEAM2=[]
closed=0
annom=1
npc=self.addSpawn(REGISTER,locr[0],locr[1],locr[2],30000,False,0)
self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
Announcements.getInstance().announceToAll(u"\u041e\u0442\u043a\u0440\u044b\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0432\u0435\u043d\u0442 "+str(NAME)+u". \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0433\u043e\u0440\u043e\u0434\u0435 "+str(LOC)+".")
if event == "close":
res_timer = 1
self.startQuestTimer("res", RES_TIME*1000, None, None)
self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
for nm in TEAM1:
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if not i.isOnline() or i.isInOlympiadMode():
TEAM1.remove(nm)
else:
TEAM1.remove(nm)
for nm in TEAM2:
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if not i.isOnline() or i.isInOlympiadMode():
TEAM2.remove(nm)
else:
TEAM2.remove(nm)
while abs(len(TEAM1)-len(TEAM2))>1:
if len(TEAM1)>len(TEAM2):
self.saveGlobalQuestVar(str(TEAM1[0].getObjectId()), "team2")
TEAM2.append(TEAM1[0])
TEAM1.remove(TEAM1[0])
else:
self.saveGlobalQuestVar(str(TEAM2[0].getObjectId()), "team1")
TEAM1.append(TEAM2[0])
TEAM2.remove(TEAM2[0])
if (len(TEAM1)+len(TEAM2))< 2*YCH_MIN :
npc.deleteMe()
closed=1
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u043e\u0442\u043c\u0435\u043d\u0451\u043d \u0438\u0437-\u0437\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432!!!")
else:
closed=1
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u043d\u0430\u0447\u0430\u043b\u0441\u044f!!!")
npc.deleteMe()
npc1=self.addSpawn(BASE1,t1[0],t1[1],t1[2],30000,False,0)
npc2=self.addSpawn(BASE2,t2[0],t2[1],t2[2],30000,False,0)
for nm in TEAM1 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.stopAllEffects()
i.setTeam(2)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
i.teleToLocation(t1[0]+100,t1[1],t1[2])
for nm in TEAM2 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.stopAllEffects()
i.setTeam(1)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
i.teleToLocation(t2[0]+100,t2[1],t2[2])
if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)>0:
Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + u" \u043c\u0438\u043d\u0443\u0442(\u044b) \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u0432\u0435\u043d\u0442\u0430 "+str(NAME)+u" \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0433\u043e\u0440\u043e\u0434\u0435 "+str(LOC)+u". \u0423\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e "+str(len(TEAM1))+u" Dark Team \u0438 "+str(len(TEAM2))+u" Light Team.")
annom=annom+1
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
if event == "return_1" :
res_timer = 0
for nm in TEAM1 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
i.setTeam(0)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
for nm in TEAM2 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
i.setTeam(0)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041f\u043e\u0431\u0435\u0434\u0438\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 "+str(com1)+".")
if event == "return_2" :
res_timer = 0
for nm in TEAM1 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
i.setTeam(0)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
for nm in TEAM2 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
i.setTeam(0)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041f\u043e\u0431\u0435\u0434\u0438\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 "+str(com2)+".")
if event == "exit" :
if player.getName() in TEAM1:
TEAM1.remove(player.getName())
else:
TEAM2.remove(player.getName())
return "exit.htm"
if event == "res" and res_timer==1:
self.startQuestTimer("res", RES_TIME*1000, None, None)
for nm in TEAM1:
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
if i.isDead():
i.doRevive(0)
i.setCurrentCp(i.getMaxCp())
i.setCurrentHp(i.getMaxHp())
i.setCurrentMp(i.getMaxMp())
i.stopAllEffects()
i.setTeam(0)
i.setTeam(2)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
i.teleToLocation(t1[0]+100,t1[1],t1[2])
for nm in TEAM2:
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
if i.isDead():
i.doRevive(0)
i.setCurrentCp(i.getMaxCp())
i.setCurrentHp(i.getMaxHp())
i.setCurrentMp(i.getMaxMp())
i.stopAllEffects()
i.setTeam(0)
i.setTeam(1)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
i.teleToLocation(t2[0]+100,t2[1],t2[2])
return

def onAttack (self,npc,player,damage,isPet):
npcId = npc.getNpcId()
if npcId == BASE2 and player.getName() not in TEAM1 :
player.reduceCurrentHp(99999,player)
if npcId == BASE1 and player.getName() not in TEAM2 :
player.reduceCurrentHp(99999,player)
return

def onSkillSee (self,npc,player,skill,targets,isPet) :
if player.getTarget() == npc and skill.getId() in [1218,1015,1258,1011,1401,58,1217,329]:
player.setTeam(0)
player.broadcastStatusUpdate()
player.broadcastUserInfo()
player.teleToLocation(locr[0],locr[1],locr[2])
if player.getName() in TEAM1 :
TEAM1.remove(player.getName())
elif player.getName() in TEAM2 :
TEAM2.remove(player.getName())

def onKill(self,npc,player,isPet):
global TEAM1,TEAM2,npc1,npc2,res_timer
npcId = npc.getNpcId()
if npcId == BASE1:
res_timer=0
self.startQuestTimer("return_2", 10000, None, None)
npc2.deleteMe()
for nm in TEAM2 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
for id, count, chance in REWARD :
if Rnd.get(100)<=chance :<br /> i.getQuestState(qn).giveItems(id,count)
if npcId == BASE2:
res_timer=0
self.startQuestTimer("return_1", 10000, None, None)
npc1.deleteMe()
for nm in TEAM1 :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
for id, count, chance in REWARD :
if Rnd.get(100)<=chance :<br /> i.getQuestState(qn).giveItems(id,count)
return

QUEST = Quest(5556, qn, "Custom")

QUEST.addKillId(int(BASE1))
QUEST.addAttackId(int(BASE1))
QUEST.addKillId(int(BASE2))
QUEST.addAttackId(int(BASE2))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))
QUEST.addSkillSeeId(int(BASE1))
QUEST.addSkillSeeId(int(BASE2))[/code]
Знаю что етот кусок отвечает за запрет наносить дамаг по своей базе.

[code] def onAttack (self,npc,player,damage,isPet):
npcId = npc.getNpcId()
if npcId == BASE2 and player.getName() not in TEAM1 :
player.reduceCurrentHp(99999,player)
if npcId == BASE1 and player.getName() not in TEAM2 :
player.reduceCurrentHp(99999,player)
return[/code]
Мои примерные догадки как может выглядеть:

[code] if player = target.getLevel() not in TEAM1 :
player.getLevel()
if player = target.getLevel() not in TEAM2 :
player.getLevel()[/code]
Или так:

[code] if player = target.getLevel() not in TEAM1 :
target.getLevel()
if player = target.getLevel() not in TEAM2 :
target.getLevel()[/code]
Но так же не понятно куда етот кусок вставлять и при каких условиях. Кто разбирается плиз помогите.]]>
ScriptJava Framework - готовые примеры на javascript http://www.seocoder.ru/discussion/257/scriptjava-framework-gotovye-primery-na-javascript Tue, 07 Feb 2012 03:21:20 -0500 perepyk 257@/discussions
ScriptJava это JavaScript Framework, который создан для облегчения разработки динамических веб-приложений.

[B]ScriptJava Framework[/B]

* работа с элементами
* работа с ajax
* динамическая подгрузка скриптов
* динамическое создание элементов
* динамическая подгрузка css стилей
* отправка файлов через ajax
* отправка формы через ajax
* работа с cookie
* работа с событиями
* работа с браузером, экраном, числами, элементами

Подробный мануал на русском
http://scriptjava.net/

Поддерживает все современные браузеры!

[COLOR=Red][B]Краткое описание функций[/B][/COLOR]

[CODE]
$$() - получение доступа к элементам
$$a() - работа с ajax
$$c() - работа с cookie
$$e() - работа с событиями
$$f() - отправка форм через ajax
$$i() - динамическое подключение скриптов стилей и создание элементов
$$r() - работа с событием window.onload
$$s() - набор полезных функций по работе с экраном, мышью, браузером, элементами, числами и т.д.
[/CODE]

[B]Примеры на scriptjava:[/B]

[COLOR=Red][B]Отправка файла через AJAX[/B][/COLOR]

Вначале нужно подключить сам scriptjava фреймворк

[CODE]

[/CODE]

Для отправки файлов серверу есть такая форма

[CODE]





Тут будет статус загрузки



Отправить файл через Ajax


[/CODE]

Пишем для него функцию отправки

[CODE]

function SendFile() {
$$f({
formid:'test_form',//id формы
url:'ajax.php',//адрес на серверный скрипт который будет принимать файл
onstart:function () {//действие при начале отправки файла на сервер
$$('status','начинаю отправку файла');
},
onsend:function () {//действие по окончании отправки файла на сервер
$$('status',$$('status').innerHTML+'
файл успешно загружен');
}
});
}

[/CODE]

Чтобы получить ответ от сервера, содержимое файла ajax.php может быть таким:

[CODE]
<?php<br /> if($_FILES['upload_file']['size']>0) {
echo '

var elm=parent.window.document.getElementById("status");
elm.innerHTML=elm.innerHTML+"
Получен файл '.$_FILES['upload_file']['name'].' размером '.$_FILES['upload_file']['size'].' байт";

';
}
?>
[/CODE]

[COLOR=Red][B]Работа с cookies[/B][/COLOR]

Вначале нужно подключить сам scriptjava фреймворк

[CODE]

[/CODE]

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

[CODE]

//проверяю поддержку cookie браузером
if($$c.test()) {
alert('браузер поддерживает cookie');
}
else {
alert('браузер не поддерживает cookie');
}

[/CODE]

Вот так можно установить кукисы на 10 секунд

[CODE]

//устанавливаю cookie
$$c.set('test', 'содержимое test', 10);

[/CODE]

Вот так можно считать кукисы

[CODE]

//читаю cookie
alert($$c.get('test'));

[/CODE]

Для удаления установленных кукисов достаточно использовать такой код

[CODE]

//удаляю cookie
$$c.erase('test');

[/CODE]

[COLOR=Red][B]Отправка формы через Ajax.[/B][/COLOR]

Вначале нужно подключить сам scriptjava фреймворк

[CODE]

[/CODE]

Допустим на странице сайта у нас есть форма

[CODE]

Имя:

Комментарий:


Тут будет статус загрузки



Отправить форму через Ajax


[/CODE]

Ее можно отправить на сервер через AJAX с помощью кода

[CODE]

function SendForm() {
//отправка файла на сервер
$$f({
formid:'test_form',//id формы
url:'comment.php',//адрес на серверный скрипт, такой же как и в форме
onstart:function () {//действие при начале отправки
$$('result','начинаю отправку');//в элемент с id="result" выводим результат
},
onsend:function () {//действие по окончании отправки
$$('result',$$('result').innerHTML+'
комментарий успешно отправлен');//в элемент с id="result" выводим результат
}
});
}

[/CODE]

Чтобы получить ответ от сервера, содержимое файла comment.php может быть таким:

[CODE]
<?php<br /> if(isset($_POST['name'])) {
echo'

var elm=parent.window.document.getElementById("result");
elm.innerHTML=elm.innerHTML+"
Получено имя '.str_replace("\r","",str_replace("\n","
",htmlspecialchars(stripslashes($_POST['name'])))).' с текстом '.str_replace("\r","",str_replace("\n","
",htmlspecialchars(stripslashes($_POST['comment'])))).' ";

';
}
?>
[/CODE]

[COLOR=Red][B]Динамическое подключение скриптов[/B][/COLOR]

Вначале нужно подключить сам scriptjava фреймворк

[CODE]

[/CODE]

Чтобы динамически подключить скрипт, а также после его загрузки выполнить из него код, нужно выпонить следующий код

[CODE]

function GetScript() {
//Подключаю внешний скрипт и запускаю из него метод
$$i({
create:'script',
attribute: {
'type':'text/javascript',
'src':'http://nagon.net/js/NRMSLib.js'//адрес на подключаемый скрипт
},
insert:$$().body,
onready:function() {
modules.sound.start();//этот метод запускается уже из подключенного скрипта
}
});
}
GetScript();

[/CODE]

Дописываю вышепоказанный код, теперь он будет запускаться сразу после загрузки сайта:

[CODE]

//выполнение кода только после загрузки документа
$$r(function() {
//Подключаю внешний скрипт и запускаю из него метод
$$i({
create:'script',
attribute: {
'type':'text/javascript',
'src':'http://nagon.net/js/NRMSLib.js'//адрес на подключаемый скрипт
},
insert:$$().body,
onready:function() {
modules.sound.start();//этот метод запускается уже из подключенного скрипта
}
});

});

[/CODE]

[COLOR=Red][B]Отправка GET, POST, HEAD запросов через AJAX[/B][/COLOR]

Вначале нужно подключить сам scriptjava фреймворк

[CODE]

[/CODE]

Поместим на сайт такой html код

[CODE]
Тут будет ответ от сервера



Отправить GET запрос через Ajax


Отправить POST запрос через Ajax


Отправить HEAD запрос через Ajax


[/CODE]

Пишем код

[CODE]

function SendGet() {
//отправляю GET запрос и получаю ответ
$$a({
type:'get',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
data:{'q':'1'},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'
'+data);
}
});
}

function SendPost() {
//отправляю POST запрос и получаю ответ
$$a({
type:'post',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
data:{'z':'1'},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'
'+data);
}
});
}

function SendHead() {
//отправляю HEAD запрос и получаю заголовок
$$a({
type:'head',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'
'+data);
}
});
}

[/CODE]

Содержимое файла ajax.php

[CODE]
<?php<br /> if(isset($_GET['q'])) {
header("Content-type: text/txt; charset=UTF-8");
if($_GET['q']=='1') {
echo 'запрос GET успешно обработан, q = 1';
}
else {
echo 'карявый GET запрос';
}
}
if(isset($_POST['z'])) {
header("Content-type: text/txt; charset=UTF-8");
if($_POST['z']=='1') {
echo 'запрос POST успешно обработан, z = 1';
}
else {
echo 'карявый POST запрос';
}
}
?>
[/CODE]


[COLOR=Red][B]Остальные примеры смотрите на оф сайте фреймворка[/B][/COLOR]

]]>
программирование для Андроид Маркета http://www.seocoder.ru/discussion/256/programmirovanie-dlya-android-marketa Sun, 05 Feb 2012 07:09:29 -0500 VadimVGA 256@/discussions Задачка на графику в NetBeans (светофор) http://www.seocoder.ru/discussion/255/zadachka-na-grafiku-v-netbeans-svetofor Fri, 03 Feb 2012 13:26:24 -0500 LOGAN611 255@/discussions python 2.x vs python 3.x http://www.seocoder.ru/discussion/52/python-2.x-vs-python-3.x Fri, 03 Jun 2011 12:40:08 -0400 seocoder 52@/discussions charset_test в facebook. http://www.seocoder.ru/discussion/254/charset_test-v-facebook. Tue, 31 Jan 2012 06:50:48 -0500 kalombo 254@/discussions Нужно мнение... http://www.seocoder.ru/discussion/242/nuzhno-mnenie... Tue, 29 Nov 2011 12:26:21 -0500 ivlevdenis_ru 242@/discussions тут. Нужно ваше мнение, и может кто захочет подключиться к нему.]]> Почему не надо начинать с Django http://www.seocoder.ru/discussion/218/pochemu-ne-nado-nachinat-s-django Mon, 29 Aug 2011 10:39:41 -0400 medar 218@/discussions
http://www.mindcollapse.com/blog/265.html

"Все маленькие команды создают проекты на одной левой коленке с помощью простого и быстрого инструментария, а далее начинает действовать правило снежного кома - старый код обрастает новым и заменить ядро можно только полность раскопав верхние слои. Не обошла стороной эта проблема и нас, для реализации был выбран фреймворк Django, возможностей которого хватало примерно с год, а дальше мы столкнулись с проблемой большинства. При куче достоинств у этого инструмента есть один большущий минус - узколобое и совершенно не гибкое ORM на котором завязано абсолютно все: CRUD интерфейс панели администрирования, модуль аутентификации, генератор форм и тому подобное. Проблема была достаточно серьезная - нужно было либо внедрять прямые SQL инъекции, используя сторонние raw sql билдеры, сведя на нет переносимость, абстрагированность от синтаксиса и саму идею ORM, либо искать альтернативные решения."]]>
bottle мини фреймворк http://www.seocoder.ru/discussion/253/bottle-mini-freymvork Thu, 12 Jan 2012 05:50:25 -0500 specialistseo 253@/discussions http://bottlepy.org/docs/dev/ - под названием бутылка.
Поддерживает базовые возможности как в джанго, модель mvc
Пример hello world

from bottle import route, run

@route('/hello/:name')
def index(name='World'):
return 'Hello %s!' % name

run(host='localhost', port=8080)]]>
Литература по python и django http://www.seocoder.ru/discussion/17/literatura-po-python-i-django Wed, 20 Apr 2011 05:00:11 -0400 seocoder 17@/discussions Чем замерить позиции в google.com.ua? http://www.seocoder.ru/discussion/251/-chem-zamerit-pozicii-v-google.com.uas Mon, 09 Jan 2012 01:31:01 -0500 idolomatoff 251@/discussions PHP vs Python http://www.seocoder.ru/discussion/15/php-vs-python Sun, 17 Apr 2011 04:51:51 -0400 seocoder 15@/discussions http://www.seocoder.org/2011/04/04/php-vs-python/]]> Для чего вам деньги http://www.seocoder.ru/discussion/252/dlya-chego-vam-dengi Tue, 10 Jan 2012 05:41:34 -0500 evilempire 252@/discussions Реклама сайта через твиттер. http://www.seocoder.ru/discussion/244/reklama-sayta-cherez-tvitter. Wed, 30 Nov 2011 00:58:41 -0500 kapusta 244@/discussions Хотелось бы узнать ваше мнение на этот счёт.
Действительно ли такой метод эффективен?
За какие сроки можно ощутить результат?
спасибо.]]>
Проблема с Edit'ом http://www.seocoder.ru/discussion/250/problema-s-editom Mon, 09 Jan 2012 01:20:14 -0500 idolomatoff 250@/discussions Работа вашей мечты http://www.seocoder.ru/discussion/51/rabota-vashey-mechty Fri, 03 Jun 2011 01:37:40 -0400 seocoder 51@/discussions нужно отсортировать по оценкам с наивысшего http://www.seocoder.ru/discussion/248/nuzhno-otsortirovat-po-ocenkam-s-naivysshego- Sun, 25 Dec 2011 05:00:37 -0500 Asem 248@/discussions var f:text; c:char; n,k:integer;
s:string;
begin assign(f,'zhurnal.txt');
reset(f);
begin
setwindowsize(800,700);
Hidecursor;
SetBrushStyle(bsclear);
SetFontStyle(fsBoldItalic);
SetFontName('Monotype Corsiva');
setfontsize(15);
setfontcolor(clwhite);
n:=loadpicture('êàðòèíêè/img36.jpg');
drawpicture(n,0,0);
k:=0;
setfontsize(20);
while not(eof(f)) do
begin
readln(f,s);
textout(100,20+k,s); k:=k+20;
end;
close(f);end;
end.]]>
Проблема лишнего веса http://www.seocoder.ru/discussion/25/problema-lishnego-vesa Sun, 24 Apr 2011 15:03:53 -0400 seocoder 25@/discussions p.s. я так понимаю проблема есть только у женатых ))]]> отобразить Unicode в Memo http://www.seocoder.ru/discussion/247/otobrazit-unicode-v-memo Sun, 18 Dec 2011 09:57:26 -0500 Mnemonik 247@/discussions
Подскажите как отобразить текст .txt формате с кодировкой "UTF-16LE" в Memo Builder 6 C]]>
паскаль http://www.seocoder.ru/discussion/246/paskal Mon, 05 Dec 2011 13:41:03 -0500 Asem 246@/discussions uses crt,GraphABC;
procedure popriguncik;
var
w,i,pic,x,y,y1: integer;

var x0,y0,x2,y2,u,j,R: integer;
xz: array [1..100] of integer;
yz: array [1..100] of integer;
begin
setwindowsize(500,500);
x:=70;y:=1;
pic:=LoadPicture('001.png');
line(0,450,400,450);

{down}
i:=1;
repeat
i:=i+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=400;
{up}
i:=400;
repeat
i:=i-1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=200;
{down}
i:=200;
repeat
i:=i+1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=400;
{up}
i:=400;
repeat
i:=i-1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=300;

i:=300;
repeat
i:=i+1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=400;

i:=400;
repeat
i:=i-1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=350;

i:=350;
repeat
i:=i+1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=400;

i:=400;
repeat
i:=i-1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=360;

i:=360;
repeat
i:=i+1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=400;
i:=400;
repeat
i:=i-1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=390;
i:=390;
repeat
i:=i+1;
if (i mod 5)=0 then x:=x+1;
DrawPicture(pic,x,i,50,50);
sleep(1);
until i=400;
for i:=x to 800 do begin drawpicture(pic,i,400,50,50);sleep(1);end;
end;






procedure Sun;
begin
popriguncik;
setbrushcolor(clyellow);
setpencolor(clyellow);
circle(x0,y0,50);
sleep(10);
end;

procedure Zemla;
begin
setpencolor(clnavy);
setbrushcolor(clnavy);
circle(x,y,20);
end;

begin
lockdrawing;
Hidecursor;
setwindowsize(500,400);

for i:=1 to 100 do
begin
xz[i]:=random(500);
yz[i]:=random(400);
setbrushcolor(clwhite);
end;
x0:=250; y0:=200; R:=150;
repeat
for u:=1 to 360 do
begin
clearwindow (clblack);
for i:=1 to 100 do
begin
setbrushcolor(clwhite);
circle(xz[i],yz[i],2);
end;
Sun;
x:=round(x0+R*cos(pi*u/180));
y:=round(y0+R*sin(pi*u/180));
Zemla;
sleep(10);
redraw;
end;
until keypressed;


end.
]]>
работа с Unicode в С++ http://www.seocoder.ru/discussion/245/rabota-s-unicode-v-s- Fri, 02 Dec 2011 12:02:25 -0500 Mnemonik 245@/discussions
хочу написать на С++ словарь с использованием Unicode символов, базу слов использовать в .txt формате.
К файлу со словами, к строкам обращаться чез потоки, точнее хочу использовать "fopen".
Результат выводить в Edit.
Так вот, как обращаться к строкам через потоки?]]>
Какая специальность лучше? http://www.seocoder.ru/discussion/67/kakaya-specialnost-luchshes Tue, 14 Jun 2011 07:35:17 -0400 PaDyra 67@/discussions Как вы отдыхаете? http://www.seocoder.ru/discussion/5/kak-vy-otdyhaetes Sat, 16 Apr 2011 11:22:13 -0400 seocoder 5@/discussions Люди, помогите! http://www.seocoder.ru/discussion/243/lyudi-pomogite Tue, 29 Nov 2011 13:08:45 -0500 NSD 243@/discussions Как лучше продвигать сайт? http://www.seocoder.ru/discussion/239/kak-luchshe-prodvigat-sayts Tue, 22 Nov 2011 19:25:58 -0500 joth_ru 239@/discussions помогите новичку с анализом сайта. http://www.seocoder.ru/discussion/240/pomogite-novichku-s-analizom-sayta. Wed, 23 Nov 2011 00:34:54 -0500 mellon 240@/discussions Пролиновку и мета теги расставлять не умею.
Смог оптимизировать контент, ну и там ссылки прописал.
Сайт в подписи - первая строка, вторая строка - ярушка в помощь сайту.
Всё ли я делаю верно? Новаые статьи пишу через день, дублирую всё на я.ру
По некоторым запросам мой сайт в топе.]]>
музыкальный сайт http://www.seocoder.ru/discussion/241/muzykalnyy-sayt Thu, 24 Nov 2011 08:20:20 -0500 mellon 241@/discussions Алгоритм поиска исполнителей и альбомов http://www.seocoder.ru/discussion/203/algoritm-poiska-ispolniteley-i-albomov Fri, 08 Jul 2011 05:32:50 -0400 seocoder 203@/discussions Каких фич не хватает на форуме? http://www.seocoder.ru/discussion/10/kakih-fich-ne-hvataet-na-forumes Sat, 16 Apr 2011 13:53:06 -0400 seocoder 10@/discussions Вычисления на GPU http://www.seocoder.ru/discussion/234/vychisleniya-na-gpu Mon, 21 Nov 2011 05:46:50 -0500 Divisionbyzero 234@/discussions