UPD: Одним из главных требований дипломной работы - применение работы в реальной жизни. Такие работы лучше оцениваются и защита проходит легче.
Какие задачи нужно уметь решать на чистом JS, перед тем как переходить к изучению библиотек и фреймворков?
Хотелось бы узнать что это за задачи(упомянутые вами 80%)
<?php
class Dummy
{
/**
* Хранимый ли?
* @var boolean
*/
private $persistent = true;
public $me;
function __construct($me)
{
$this->me = $me;
}
public function forgetMe()
{
$this->persistent = false; // теперь нехранимый
}
/**
* Какая то логика при сохранении
*/
public function save()
{
if (!$this->persistent) // если нехранимый
{
echo $this->me . " was NOT saved\n";
return true; // понять, простить и забыть
}
echo $this->me . " saved OK\n";
}
}
$obj1 = new Dummy('first');
$obj2 = new Dummy('second');
$obj1->forgetMe();
$obj1->save(); // -> first was NOT saved
$obj2->save(); // -> second saved OK
a:3:{i:0;s:2:"53";i:1;s:2:"55";i:2;s:2:"56";}
<?php
$a = array(
0 => "53",
1 => "55",
2 => "56"
);
$b = serialize($a);
echo $b; # a:3:{i:0;s:2:"53";i:1;s:2:"55";i:2;s:2:"56";}
SELECT DISTINCT A.`user_id`
FROM(
SELECT m1.`from` as `user_id`, m1.`date` FROM `messages` m1 WHERE m1.`to` = 7
UNION
SELECT m2.`to` as `user_id`, m2.`date` FROM `messages` m2 WHERE m2.`from` = 7
ORDER BY `date` DESC
) A
<?php
$page = (isset($_GET['page'])) ? $_GET['page'] : 'index.php';
$layoutModificator = '';
// комментарий: определять значение $layoutModificator нужно до того, как она "эхается" в <body>
switch ($page) {
case 'slider':
$includeFile = "page/slider.php";
break;
case 'animation':
$layoutModificator = "splash";
$includeFile = "page/animation.php";
break;
}
// комментарий: вот тут ниже пустая строка - потенциальная проблема, особенно при выдаче заголовков header(...);
?>
<!-- .... -->
<body class="<?php echo $layoutModificator;?>">
<!-- .... -->
<?php include($includeFile); // вместо switch ?>
location ~ /old/path {
rewrite /old/path(.*) /new/path$1 break;
}
A pure PHP library for reading and writing word processing documents
Есть ли концептуальная разница между решениями этой задачи на бэкендах laravel и nodejs?
As of November 2013, Socket.io's list of supported browsers was:
Desktop:
- Internet Explorer 5.5+
- Safari 3+
- Google Chrome 4+
- Firefox 3+
- Opera 10.61+
Mobile:
- iPhone Safari
- iPad Safari
- Android WebKit
- WebOs WebKit
They achieve this level of support by using a variety of transports, depending on what the browser is capable of (again, from November 2013):
- WebSocket
- Adobe® Flash® Socket
- AJAX long polling
- AJAX multipart streaming
- Forever Iframe
- JSONP Polling
$unsortedArray = array(
'import_files/5d/namers.jpg' => array('description' => '1 колечко блестящее'),
'import_files/5d/name31.jpg' => array('description' => '10 морозное утро'),
'import_files/5d/name13.jpg' => array('description' => '4 морозное утро'),
// ...
);
uksort($unsortedArray, function($a, $b) use($unsortedArray) {
return strnatcmp($unsortedArray[$a]['description'], $unsortedArray[$b]['description']);
});
Но как это лучше делать если серверам нужны данные друг от друга? Обычные curl запросы?
<?php
class AppRequest {
protected $_get;
/**
* Normalizes the request data
* This method strips off slashes in request data if get_magic_quotes_gpc() returns true
*/
protected function normalizeRequest() {
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
if(isset($_GET)) {
$_GET = $this->stripSlashes($_GET);
}
}
if(isset($_GET)) {
$this->_get = $_GET;
}
}
/**
* Returns the named GET parameter value
* If the GET parameter does not exist, the second parameter to this method will be returned
* @param string $name the GET parameter name
* @param mixed|null $default the default parameter value if the GET parameter does not exist
* @return mixed|null the GET parameter value
*/
public function getQueryVar($name, $default = null) {
if (isset($this->_get[$name])) {
return $this->_get[$name];
}
return $default;
}
/**
* Returns the request URI portion for the currently requested URL
* @return string the request URI portion for the currently requested URL
*/
public function getRequestUri() {
static $requestUri;
if (!isset($requestUri)) {
if(isset($_SERVER['REQUEST_URI'])) {
$requestUri = $_SERVER['REQUEST_URI'];
if(!empty($_SERVER['HTTP_HOST'])) {
if(strpos($requestUri, $_SERVER['HTTP_HOST']) !== false) {
$requestUri = preg_replace('/^\w+:\/\/[^\/]+/', '', $requestUri); // remove schema and host name "schema://host/"
}
} else {
$requestUri = preg_replace('/^(http|https):\/\/[^\/]+/i', '', $requestUri); // remove schema and host name "schema://host/"
}
}
}
return $requestUri;
}
}
class HomeController {
function indexAction() {
echo "Welcome!";
}
}
// Incoming URL mathing rules
$rules = array(
// if request URI is empty
'' => array('home', 'index'), // -> код контролера + код действия
// if request URI looks like /my-home-page/
'/^my-home-page$/' => array('HomeController', 'indexAction'), // -> имя класса контроллера + имя функции
// if request URI looks like /photo/summer.jpg
'/^/photo/(?<alias>.+)$/' => array('gallery', 'view', array('image-alias' => ':alias')),
// if request URI looks like /wiki/path/to/article.html
'^/wiki/(?<alias>.+)\.html$' => array('wiki', 'view', array('page-alias' => ':alias')),
);
class HomeIndex {
function run() {
return new AppResponse("Welcome!");
}
}
function home_index() {
return new AppResponse("Welcome!");
}
$routes = array(
'/my-home-page/' => 'home_index',
);
$routes = array(
'/my-home-page/' => function() { return new AppResponse("Welcome!"); },
);
REVOKE *.* ON <database>.<table> FROM <username>@localhost;
GRANT SELECT, REFERENCE ON <database>.<table> TO <username-readonly>@localhost; -- только SELECT c JOIN