Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Какой вариант будет быстрее работать?

Всем привет!
Имеется самодельный движок, в котором шаблону подключаются несколько файлов кэша, содержащие данные, которые потом передаются переменным $menu, $rubrics и $cloud.

Есть два вариант подключения:

1. Вариант.
Сделать три файла menu.cache, rubrics.cache и cloud.txt. В файле index.php в самом коде прописываем:


$cloud = file_get_contents('gs_blog/includes/cloud.txt'); // подключаем облако
$menu = file_get_contents('gs_blog/cache/menu.cache'); // подключаем кэш меню
$rubrics = file_get_contents('gs_blog/cache/rubrics.cache'); // подключаем кэш рубрик (категорий)


2. Вариант.
Делаем один файл, назовём его cache.php и в нём пишем:

<?php
$cloud = 'HTML'; // подключаем облако
$menu = 'HTML'; // подключаем кэш меню
$rubrics = 'HTML'; // подключаем кэш рубрик (категорий)
?>


Затем в файле index.php подключаем созданный файл:
include 'includes/cache.php';


Какой из этих вариантов будет работать быстрее?
Ответ: Zzepish Давай не будем оскорблять друг друга.

То что он делает, это не основы, а изобретение велосипеда. Он и так не знает основ. И врядли их узнает, если будет свои велосипеды строить, не читая чужой.
Я вот не знаю как внутри устроена функция file_get_contents() а так же драйвер файловой системы, который используется для чтения файлов на низком уровне, да мне и не нужно это знать, ведь есть простой интерфейс - в данном случае ф-я file_get_contents().

Так же и с кодом, скачал фреймворк, и написал и работает. $cache->get(), $cache->set(), в конфигурации указал провайдер кэширования: файловая система, или Redis сервер...
Если хочется разобраться как устроено - открываешь исходники фреймворка и смотришь. Над ним трудились довольно умные люди, переймешь хорошие практики.

Более того, сейчас рынку нужны только те программисты, которые работают с библиотеками и фреймворками. Вот и задумайся, на что тратить время.
Вопрос: Какие варианты кода не вызовут ошибку компиляции?

Какие варианты кода не вызовут ошибку компиляции?

Вариант 1
class Parent {}
interface FirstChild {}
interface SecondChild extends FirstChild {}

Вариант 2
class Parent {}
interface FirstChild {}
interface SecondChild implements FirstChild {}

Вариант 3
class Parent {}
interface FirstChild {}
class SecondChild implements FirstChild {}

Вариант 4
class Parent {}
interface FirstChild extends Parent {}
class SecondChild implements FirstChild {}

Вариант 5
class Parent {}
class FirstChild extends Parent {}
class SecondChild implements FirstChild {}
что такое interface и implements. новичек ничего не смыслю
Ответ:
Сообщение от amd11
Какие варианты кода не вызовут ошибку компиляции?
Так попробуйте скомпилировать, и узнаете!
Вопрос: Какие числа и в каком порядке будут прочитаны из стека

Какие числа и в каком порядке будут прочитаны из стека после 5 операций чтения, если предварительно в стек была записана последовательность из 7 чисел: 3A, 41, 23, 9F, 05, 89, FB в указанном порядке?
Ответ:
Сообщение от Ajb
Какие числа и в каком порядке будут прочитаны из стека
Стек обрабатывается по принципу LIFO (Last In First Out).

Для наглядности представляешь стопку тарелок
Вопрос: Определить, какие значения будет принимать угол между палкой и полом

Около стены наклонно стоит палка длиной Хм. Один её конец стоит на расстоянии Yм от стены. Определить, какие значения будет принимать угол а между палкой и полом для X=4,5м и Y, изменяющегося от 2 до 3 м с шагом 0,2 м.
Ответ: Будем считать, что угол между стенкой и полом = 90 градусам, это собственно логично, учитывая, как оно обычно бывает )
Соответственно используя теорему Пифагора для прямоугольного треугольника, можно узнать, какой длинны будет расстояние по стене.
Для простоты понимания, дадим переменным более осмысленные имена.
stick = палка, wall = стена, floor = пол, все в см.
stick = 450, floor = 200, wall = ?
собственно вычисляем stick^2 - floor^2 = wall^2; wall = квадратный корень из wall^2
Составляем функцию вычисления стороны:
C#
1
2
3
4
 public static double WallFinder (double s, double f)
        {
          return Math.Sqrt(Math.Pow(s, 2) - Math.Pow(f, 2));
        }
Теперь зная, все стороны вычислим синус угла между полом и палкой
Sin(A) = wall/stick;
И уже после этого, используя арксинус Math.Asin(A), получим значение нужного угла в радианах.
C#
1
2
3
4
 public static double AsinFinder(double sinus)
        {
         return Math.Asin(sinus);
        }

Ну и собственно полный код с использованием цикла, чтобы вывести все необходимые значения в пределах 200-300 см:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 public class Program
    {
        public static void Main(string[] args)
        {
           double stick = 450;
           double floor = 200;
           double wall = 0;
           
            
            for(; floor <= 300; floor+=20)
            {
             wall = WallFinder(stick, floor);
                 Console.WriteLine("floor = "+ floor + Environment.NewLine + AsinFinder(wall/stick)*(180/Math.PI) + " deg " );  // тут заодно переводим из радиан в градусы *(180/Math.PI)
            }
            
        }
        // Вычисляем расстояние от пола до палки по стене
        public static double WallFinder (double s, double f)
        {
         return Math.Sqrt(Math.Pow(s, 2) - Math.Pow(f, 2));
        }
        // Вычисляем угол нужной нам стороны
        public static double AsinFinder(double sinus)
        {
         return Math.Asin(sinus);
        }
    }
Ну и напоследок, вообще не обязательно было вычислять третью сторону, можно все было сделать через косинус, но я этого не знал, так как до этого косинусы и синусы не было нужды проходить, да-да, в школе я подзабил на этот момент, зато сейчас разобрался )

Поиграться можете в онлайн компиляторе:
Вопрос: Как правильно выбрать реализацию

Приветствую!

Подскажите, как правильно продумать механизм доставки сообщений.

Есть сокет сервер (чат-сервер), к которому подключаются клиенты. 1 клиент - 1 соединение.
При общении - все понятно, один клиент пишет другому - сообщение по Id отправляется.

Есть нюанс. Каждый определенный период времени формируются сообщения, которые нужно разослать только тем пользователям, которые в статусе Online. Причем, необходимо соблюсти обязательный порядок доставки.

То есть, например, за час было сгенерировано 5 сообщений: msg1, msg2, msg3, msg4, msg5.
User1 стал online. Сервер посылает ему msg1, User1 подтвердил получение сообщения, сервер посылает ему msg2 и так далее.

Если в какой-то момент, User1 не подтвердил доставку msg2, то через 5 секунд, ему повторно отсылается msg2 и так до тех пор, пока User1 не подтвердит что получил msg2.

Один из вариантов, перед каждой отправкой (каждые 5 секунд), брать список онлайн пользователей и перебором отправлять каждому сообщение, походу обрабатывая ответы. Но этот вариант долгий, так как если слишком много online пользователей, последний получит сообщение очень поздно, а время доставки тут тоже критично.

Или для каждого пользователя создавать отдельный Thread и в нем работать. Но тогда есть вариант, что будет слишком много одновременных потоков (1000>)

Какие еще есть оптимальные варианты доставки по времени.

Спасибо!
Ответ:
qi_ip
Подскажите, как правильно продумать механизм доставки сообщений.
странный вопрос.
Любой hello world гугле.
автор
/*
Вы что-то хотели сказать? Введите это здесь:
Алло, сервер? Ты меня слышишь?
Привет, это Сервер! Подтверждаю, вы написали : Алло, сервер? Ты меня слышишь?
Клиент был закрыт...
*/

Ура! Мы научили сервер общаться с клиентом!


Ну и базу добавить для офф лайна.
Вопрос: Подскажите какие платные есть варианты для встроенного редактора кода?

Необходимо в свое приложение включить редактор кода. Нашел пока два варианта:



Подскажите какие еще варианты есть? Спасибо
Ответ: Спасибо за ссылки, заслуживают внимания. Но если все же смотреть в сторону платных разработок, то какие еще возможны варианты?
Вопрос: Какой вариант функции блочного вывода НЕ СООТВЕТСТВУЕТ записи всего массива данных в двоичный файл

Помогите, пожалуйста:
Какой вариант функции блочного вывода НЕ СООТВЕТСТВУЕТ записи всего массива данных в двоичный файл, определенный указателем fp, если объявлен массив структур mas типа anketa:
a) fwrite(mas, sizeof(anketa), 100, fp);
b) fwrite(mas, sizeof(mas), 100, fp);
c) fwrite(mas, sizeof(mas), 1, fp);
Ответ:
Сообщение от RebelDI
b) fwrite(mas, sizeof(mas), 100, fp);
Попытка записать аж 100 массивов, а он один.

Добавлено через 1 минуту
Сообщение от Hikari
Только второй вариант еще и намусорит лишнего.
Скорее аварийно завершится.
Вопрос: Почему-то все время показывает самый последний вариант, независимо от того, ид какой новости был получен...

Доброе утречко!

Есть страница с новостями , при нажатии на новость , вылазит модальное окно , и показывает саму новость , я проверяю отображается ли нужна новость мне Switch , вот так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(isset($_GET['id']))
{
  $get = $_GET['id'];
 
  switch ($get)
  {
    case '1':
      echo 'Nomer 1';
      break;
 
      case '2':
        echo 'Nomer 2';
        break;
        case '3':
          echo 'Nomer 3';
          break;
  }
}
Проблема в том , что php почему-то все время показывает мне самый последний вариант , независимо от того ид какой новости был получен..

Вот JS.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
$('#shot-modal .modal-content').html('<div class="spinner"><span class="dot1"></span><span class="dot2"></span><span class="dot3"></span></div>');
    $('#shot-modal').modal();
 
    setTimeout(function(){
      href = document.getElementById('mylink').getAttribute('href');
      $('#shot-modal .modal-content').load(href, function() {
        initGallery();
        initModalLike();
      })
    }, 700);
 
  });
Ответ: shot-gallery-for-modal.php?id=$id

Вообще без JS , все отображается корректно , то есть , убираю весь JS код , перехожу на страницу , и все ок. Показывает нужные номера.

Добавлено через 3 минуты
ой , сорян. я не так поняла. Все равно везде 3 выводит.
shot-gallery-for-modal.php?id=3

Добавлено через 53 минуты
Кароче , getAttribute цепляет первое найденное значение , и потом использует его везде..Как это исправить? D:

Добавлено через 2 часа 42 минуты
Бамп.

Добавлено через 2 часа 48 минут
Все еще актуально..

Добавлено через 45 минут
Решено , всем спасибо за помощь!

Javascript
1
2
3
4
5
var shotId = $(this).parents('.shot').data('id');
    $('#shot-modal .modal-content').load('shot-gallery-for-modal.php?id='+ shotId, function() {
      initGallery();
      initModalLike();
    });
Вопрос: Get*/Set* отдельными методами или одним, какой вариант более православный?

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

class A {
public:
    int  getVal() { return _val; }
    void setBal(int val) { _val = val; }
private:
    int _val;
}


или получение и установку переменной-члена класса объединить в одном методе:

class A {
public:
    int val(int val=-1) { if(val > -1) return _val; else _val = val; }
private:
   int _val;

}

Или так только хипстеры с Ямайки пишут?
Ответ:
alex_k
CEMb
Истинный программианин не должен соблазняться голым доступом для осуществления грешных помыслов

Все лгут ошибаются. Но компилятор реже всех :)
Да компилятору вообще всё равно, лишь бы компилировалось. Дело в другом: быстрая и удобная разработка. Для людей. Это мы тут уже давно в двух темах обсуждаем. Я просто подкинул идею, как можно упростить процесс разработки. Есть риск ошибок, да, я уже писал про это, но этот риск, по сравнению с другими рисками, очень мал и быстро вычисляется и фиксается. И то, в данном случае мы больше обнаруживаем кривых программистов
Сплошная польза.
Вопрос: Какой должна быть структура веб приложения на основе Spring?

Решил начать разбираться со спрингом. Вроде бы понятно всё, а вроде не понятно ничего.
Какой должна быть структура вэбприложения?
И не совсем понимаю, как получить доступ ко вью.
Например, что бы
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
 @RequestMapping(value = "/get", method = RequestMethod.GET)
    @ResponseBody
    public Remind getReminder(){
}
возвращал html страницу из вью.
P.S
не ругайтесь сильно, если вопрос не корректен, я только начинаю
Ответ:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
@RequestMapping(value = "/get", method = RequestMethod.GET)
public ModelAndView getReminder()
{
    ModelAndView mav = new ModelAndView("viewName");
    return mav ;
}
Смотри что бы префикс в резолвере правильно был указан.

Добавлено через 7 минут
Либо
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
@RequestMapping(value="/value", method=RequestMethod.GET)
public String getReminder(Model model) {
  return "viewName"
}
Без @ResponseBody