Страницы

Поиск по вопросам

пятница, 10 мая 2019 г.

Как прописать редирект в .htaccess если изменился домен?

Есть старый сайт на поддомене, например 2015.site.ru
поменяли основной домен site.ru на 2015.site.moscow
теперь нужно чтобы все обращения к 2015.site.ru переадресовывались на 2015.site.moscow
И естественно, не только обращения только к инденсу домена, но и любые другие, например чтобы http://2015.site.ru/images/pic.gif преобразовывался в http://2015.site.moscow/images/pic.gif
Однако при обращение к основному сайту site.ru не должно быть переадресации на site.moscow Подскажите пожалуйста, как такое прописать в .htaccess?


Ответ

просто классика. скопировано из ответа
rewriteengine on rewritecond %{HTTP_HOST} ^a\.example\.com rewriterule ^(.*)$ http://b.example.com/$1 [r,l]

доп. информация: http://wiki.apache.org/httpd/WhenNotToUseRewrite

Как не менять строку после выполнения команды bash

Делаю вывод любой команды bash в файл, после этого делаю вывод следующей команды в этот же файл. Хочу чтобы результат второго вывода записывался в ту же строку, что и первый.
Например: echo 123 > file date >> file
чтобы в итоге получилось 123 Вт. дек. 8 14:17:39 MSK 2015
Вывод будет вестись в большом массиве текста, поэтому решение не должно быть универсальным для любой строки в документе.


Ответ

man echo
echo -n "123 " > file echo -n `date` >> file

Набор номера мобильного телефона с Android приложения

Есть активити в котором в ListView отображаются заказы, в каждом заказе есть поле: номер телефона, как можно прямо в ListView сделать этот номер ссылкой, при нажатии на которую - набирался бы номер?


Ответ

1)Прописываем в манифесте:
2)Код для звонка
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + yourArrayList.getPosition(position).getPhoneNumber())); startActivity(intent);
3) Выше пример для списка с объектами. Если же у вас каждый элемент это одно текстовое поле со всей инфой, то надо бы передеалть тогда. Ну или как максимум поиграться с subString

Как получить полный путь к папкам Temp и Application Data

Имеются ввиду системная папка Temp в WINDOWS\ и Application Data (%APPDATA%)


Ответ

%APPDATA% можно получить, например, функцией SHGetFolderPath или getenv из стандартной библиотеки, %TEMP% для текущего пользователя - GetTempPath или та же getenv, а вот для получения системной папки %TEMP% придётся использовать функцию ExpandEnvironmentStringsForUser
#include
#include #include #include
int main() { TCHAR szPath[MAX_PATH]; char* path;
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath))) { std::cout << "%APPDATA% (SHGetFolderPath) = " << szPath << std::endl; }
path = getenv("APPDATA"); if (path != NULL) { std::cout << "%APPDATA% (getenv) = " << path << std::endl; }
if (GetTempPath(MAX_PATH, szPath)) { std::cout << "User's %TEMP% (GetTempPath) = " << szPath << std::endl; }
path = getenv("TEMP"); if (path != NULL) { std::cout << "User's %TEMP% (getenv) = " << path << std::endl; }
if (ExpandEnvironmentStringsForUser(NULL, "%TEMP%", szPath, MAX_PATH)) { std::cout << "System's %TEMP% = " << szPath << std::endl; }
return 0; }
Для использования ExpandEnvironmentStringsForUser нужно дополнительно прилинковаться к Userenv.dll

Ревью Архитектуры приложения

Есть решение разбитое на следующие слои: DAO, DAL, Services Gui где,
DAO - здесь хранятся классы описывающие доменнные модели; DAL - Generic Repository и его реализация; Services - здесь у меня методы по типу следующего: IEnumerable GetEntities() Gui - клиентская часть
предвижу сразу вопрос чем Services отличается от Repository, в репозитории у меня базовые методы CRUD
void Create(Entity entity); void Update(Entity entity); void Delete(Entity entity); IQueryable Table {get;}
в Services же у меня строются более сложные запросы: соединения, группировка например:
var _orders = получаем данные; var _histories = получаем данные; var orders = _orders.Join(_histories, o=>o.Id, h=>h.OrderId,(o,h)=>new OrderView { //Формируем необходимое представление }) .ToList();
ну и т.п.
зависимости между проектами следующие:
DAO подключен в качестве reference в DAL, Services, Gui DAL подключен в качестве reference в Services, Gui Services подключен в качестве reference в Gui
Хочу проект сделать так что бы дальнейшая поддержка причиняла как можно меньше проблем.
Правильно ли я поступил разбив проект на более мелкие части, или я сделал так зря и необходимо слить все в один проект а разделение сделать на уровне директорий внутри решения и namespace
Буду премного благодарен за ссылки на литературу которую стоит почитать что бы прояснить для себя как правильно строить каркас приложения


Ответ

Есть самые разные способы проектирования приложения. Как я вижу вы пытаетесь использовать DDD. Этот паттрен достаточно универсален, но не является сильвербуллетом, а так же имеет очень много вариаций реализации, например CQRS+ES или DDD+Onion которые имеют свои назначения, а вместе с ним свои плюсы и минусы.
По мимо DDD и его вариаций, существуют такие архитектурные паттерны как EDA, SOA, NLayer и другие.
Что бы поддержка не причиняла больших проблем, нужно сначала выбрать правильную архитектуру, а это вопрос не только правильного выбора паттерна, но языка, стека технологий и многого другого. Сам же выбор зависит от решаемой задачи и различных условий.

PHP: Вставить пробел каждые N символов но начиная с конца

Как вставить пробел на РНР каждые N символов но начиная отсчет не с начала строки а с конца. Например чтобы с 1234567 получить 1 234 567 (если каждые три символа). chunk_split и wordwrap работают лишь со значениями больше 0
Можно в принципе вот так:
$reverse = strrev("1234567"); $withSpaces = chunk_split($reverse, 3, ' '); echo strrev($withSpaces);
Но может есть что то проще


Ответ

number_format
Если вкратце:
Вводимое число Сколько символов после "точки" Разделитель "точки" Разделитель тысячных (каждый третий с конца)
Пример:
echo number_format(1000000, 0, '.', ' '); // 1 000 000
echo number_format(1000000, 2, '.', ','); // 1,000,000.00