[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ищу разработчиков во французский стартап
Страницы: 1, 2, 3
AmberV
Всем привет!
Мы с ребятами делаем стартап, призванный стимулировать во Франции предпринимательство (entrepreneurship) среди студентов и недавно выпустившихся. Несколько задач сайта: поиск кофаундеров с разными профилями (программисты, бизнес, маркетинг, дизайн), нетворкинг (в реале) между отдельными участниками и стартапами, обучение и также поиск менторов.

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

Поэтому, если кому интересно поработать над проектом из сферы, тесно связанной с предпринимательством в Европе, то добро пожаловать! Сразу отмечу, что прямо сейчас могу предложить только небольшое денежное вознаграждение (поскольку со своего кармана, а над проектом мы пока что работаем лишь на энтузиазме), в качестве дополнительной мотивации. А так есть огромные возможности для самообучения и реализации разных собственных решений: при желании, можно полностью сделать целую часть проекта так, как вам нравится в техническом плане.

Я специально для проекта написал небольшой фреймворк на чистом PHP, поэтому с одной стороны есть определенная структура и вкусняшки, а с другой - куча гибкости, необходимой для быстрого расширения.

Кстати, знание английского на каком-то уровне очень приветствуется, поскольку документировать все я предпочитаю на английском. Ну и ребята из команды по-русски не говорят smile.gif


Кстати, нас выбрали сюда http://websummit.net/startups/alpha , что есть очень круто smile.gif Поэтому положение вещей (в частности, в денежном плане) могут измениться в очень положительную сторону в довольно скором времени.

Если кому интересно, пишите!
Здесь или в skype - amberv_vlad

Надеюсь, до скорого!

--
Влад
vagrand
А можно увидеть пример кода вашего фреймворка? Кусок какого-то контроллера, модель и шаблон. Чтобы так сказать составить для себя мнение относительно его грамотности и перспектив. Хотя скажу вам честно, уже одно то, что при таком многообразии фреймворков вы начали стартам с собственного велосипеда уже заставляет усомниться в его перспективах.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
AmberV
Сначала о том, почему я решил так сделать. Во-первых, изучение любого фреймворка занимает время, больше или меньше, и в конце-концов натыкаешься в самых неожиданных местах на "тупые" ограничения, которые потом попробуй обойди. При недостаточном знании фреймворка, к тому же, велика вероятность, что он будет делать ненужную в данном проекте работу.
Также проще написать велосипед с нужной рамой, нужными покрышками, нужными ободами и тормозной системой, чем брать чужой велосипед и переделывать под то, что нужно.

Ловите пример. Оставил, по возможности, только репрезентативные куски. Также сразу оговорюсь, что пока что не очень обращал внимание на дыры в безопасности :)

В контроллере, ajaxовый и обычный вызов :
<?php
class
UserController extends Controller{
public function edit(){
if($this->user->isAuthenticated()){
$this->templator
->defineViewForContent('main', 'user/edit')
->
addVar('pagetitle', 'User Edit Page')
->
addVar('finished_registration', !$this->user->get('unfinished_registration'))
->
renderTemplate('homepage');
}else{
//to do: render error view
}
}


public function register_ajax(){
$this->loadModel('user_register_ajax');
}

//еще пример:
public function search(){
//to do: check permissions before
$model = $this->loadModel('project_search');
//to do: render smth else if there are no results
$this->templator
->defineViewForContent('main', 'project/search')
->
addVar('pagetitle', 'Project search...')
->
addVarsArray($model->getData())
->
renderTemplate('homepage');
}
}




<?php

class
UserRegisterAjaxModel extends AjaxModel{
public function __construct(){
$this->email = Request::$post['email'];
$this->confirmation_code = Request::$post['confirmation_code'];
$this->password = Request::$post['password'];
parent::__construct();
}

public function register(){
//......
$user = User::createUser($registration);
//...
if(empty($registration['inviter_id']) && empty($registration['school_id'])){
$user->addRole(User::UNCONFIRMED_USER_ROLE);
}else{
$user->addRole(User::CONFIRMED_USER_ROLE);
}
if(isset($registration['school_id'])){
$user->addRole(User::SCHOOL_USER_ROLE);
}

$user->save();
$this->user->login($this->email, $this->password);
$templator = Templator::getInstance();
$templator->addVar('login_email', $this->email)->addVar('login_password', $this->password);
//заглушка отправки емейла
file_put_contents('registration_data.txt', $templator->renderEmailTemplate('registration_confirmation'));
//...

}
}
}
}


Собственно сама модель.
<?php
class
AjaxModel extends Model{
protected $action;
protected $result;
public function __construct(){
parent::__construct();
sleep(0); //to introduce kind of real-life delay, allows to see ajax loader notification
$this->action = Request::$post['action'];
if(($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') || empty($this->action)){
die;
}
$this->result = array(
'finished'=>false //shows if the ajax code has finished successfully
,'action'=>$this->action
);
if(($this->action !== '__construct') && method_exists($this, $this->action)){
$reflection = new ReflectionMethod($this, $this->action);
if($reflection->isPublic()){
$this->{$this->action}();
}
}
else{
Logger::logErrorMessage('Tried to call uncollable method');
}
$this->result['finished'] = true;
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($this->result);
}
}


Шаблоны у меня просто на PHP. Поэтому выглядит это как-то так:

<div style="float: right; border: 1px solid blue; border-radius: 0px 0px 5px 5px; padding: 7px; border-top: none; margin-top: -22px"><?php $this->renderView('common/login_form');?></div>
<?php $this->renderView($main_content);?>
</div>
<
script src="<?=$site_url?>js/bootstrap.min.js"></script>
<
script src="<?=$site_url?>js/typeahead.bundle.min.js"></script>
</
body>


Т.е. мой Templator просто делает доступным в шаблоне то, что было добавлено в Templator с помощью Templator::addVar() или подобных методов. И не надо пугаться, это просто тестовый шаблон, поэтому CSS прямо там, в HTML :)

Кроме того, есть еще кусок, который позволяет легко переводить сайт на несколько языков. В результате для переводящего человека это выглядит так: https://www.youtube.com/watch?v=RNVEFAPsDLw


Вот. Теперь очередь вашей критики :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.