List lines = Files.readAllLines(Paths.get("res/file.txt"));
//перебираете циклом
for(String s : lines)
{
s = "Бла-бла-бла!"
}
/* Если нужно удалить - для перебора используйте Iterator.
Не забудьте : */
Files.write(Paths.get("res/file.txt"), lines);
//иначе результат не запишется
#
# MyBaseimage Dockerfile
#
# Pull base image.
FROM ubuntu:14.04
MAINTAINER Your Name <your.email@gmail.maybe>
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y language-pack-en
ENV LANGUAGE en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
RUN locale-gen en_US.UTF-8
RUN dpkg-reconfigure locales
RUN echo "Etc/UTC" > /etc/timezone
RUN dpkg-reconfigure -f noninteractive tzdata
RUN apt-get install -y build-essential
RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
RUN apt-get install -y libxml2-dev wget
RUN apt-get install -y libpcre3
RUN apt-get install -y libpcre3-dev
RUN apt-get install -y libssl-dev
RUN apt-get install -y libncurses5-dev
RUN apt-get install -y git git-core
RUN apt-get install -y libpq-dev
# install nginx
RUN apt-get install -y software-properties-common python-software-properties
RUN apt-get update
docker build -t your_docker_account/your_baseimage .
#
# MyApp Dockerfile
#
# Pull base image.
FROM your_docker_account/your_baseimage
MAINTAINER Your Name <your.email@gmail.maybe>
# Set instructions on build.
RUN virtualenv /env
ADD ./ /code
RUN cd /code; /env/bin/python setup.py install
RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
# Expose ports.
EXPOSE 8484
WORKDIR /code
CMD ["/env/bin/python", "app.py"]
docker build -t your_docker_account/your_app_container .
docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql
docker run -d -p :5000:5000 \
--name my_app_container \
--link my_postgresdb_container:postgresdb \
-e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
-e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
-e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
your_docker_account/your_app_container
docker exec -it your_app_container /bin/bash
docker logs -f your_app_container
your_app:
build: .
links:
- postgresdb
ports:
- "5000:5000"
environment:
DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
postgresdb:
image: kamui/postgresql
ports:
- "5432:5432"
environment:
POSTGRESQL_DB: mydb_name
POSTGRESQL_USER: mydb_user
POSTGRESQL_PASS: super_secret_password
docker-compose up
git init
git status
git add -A
git commit -m 'Initial commit'
git remote add origin <адрес репозитория из п.1 на GitHub/Bitbucket>
git remote -v
git push origin master
git clone https://github.com/repo
import { AppContainer } from 'react-hot-loader'
import React from 'react'
import ReactDOM from 'react-dom'
import { Router, browserHistory } from 'react-router' // раз
import { Provider } from 'react-redux'
import { routes } from './routes'
import { syncHistoryWithStore } from 'react-router-redux' //два
import configureStore from './store/configureStore'
const store = configureStore()
const history = syncHistoryWithStore(browserHistory, store) //три
const rootEl = document.getElementById('root')
ReactDOM.render(
<Provider store={store}>
<AppContainer>
<Router history={history} routes={routes} /> //четыре
</AppContainer>
</Provider>,
rootEl
)
import { routerMiddleware } from 'react-router-redux' //раз
import { browserHistory } from 'react-router' //два
import { createStore, applyMiddleware, compose } from 'redux'
import thunkMiddleware from 'redux-thunk'
import createLogger from 'redux-logger'
import { rootReducer } from '../reducers'
export default function configureStore() {
const store = compose(
applyMiddleware(thunkMiddleware),
applyMiddleware(createLogger()),
applyMiddleware(routerMiddleware(browserHistory)), //три (!)
)(createStore)(rootReducer)
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('../reducers', () => {
const nextRootReducer = require('../reducers').rootReducer
store.replaceReducer(nextRootReducer)
});
}
return store
}
import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux' //раз
import products from './products'
import login from './login'
import notificationBar from './notificationBar'
import provider from './provider'
export const rootReducer = combineReducers({
products,
login,
notificationBar,
provider,
routing: routerReducer, //два
})
myIP/domain
не открывается нужный сайт, хотя по логике должен, ведь для IP адреса dev.testN.ru
это папка, которую он должен открывать.localhost
и в ней различные сайты, то в адресной строке можно обращаться localhost/someSiteName
- все открывается. А папка localhost
соответствует адресу 127.0.0.1
(локальной машине)openServer
написано: Чтобы при наборе IP адреса вашего компьютера открывался определенный локальный сайт, можно создать алиас вида ваш_внешний_ip => ваш_локальный_домен
domains
удаляем папку localhost
(или изменяем её название, чтоб убрать ассоциацию с 127.0.0.1)domains
создаем папку, которая послужит корнем для доменов. Например routeFolder
. В ней уже будут лежать папки dev.test1.ru, dev.test2.ru, dev.test3.ru и т.д.
routeFolder
) кинуть .htaccess
, который будет автоматом с корня перенаправлять, например, на сайт№1 <StaticInformation page="page1" />
, в котором, к примеру, с помощью componentDidMount() заполняется div информацией, полученной с помощью post/get запроса.<section>
<Header />
<Content />
<Footer />
</section>
countries (id, name)
regions (id, country_id, name)
cities (id, country_id, region_id, name)
private Button FirstButton = null;
void S_MouseClick(object sender, MouseEventArgs e)
{
var button = (sender as Button);
if (this.FirstButton == null)
{
// это первая кнопка в текущей сессии,
// запоминаем ссылку на кнопку
this.FirstButton = button;
}
else
{
// это вторая кнопка в текущей сессии
// сравниваем текст с первой
if (this.FirstButton.Text == button.Text)
{
Console.WriteLine("Текст совпадает!");
// меняем свойства кнопок
this.FirstButton.Text = button.Text = "--";
this.FirstButton.Enabled = button.Enabled = false;
}
else
{
Console.WriteLine("Текст не совпадает.");
}
// сбрасываем выбор, запуская тем самым новую сессию
this.FirstButton = null;
}
}
$updatingFields = [];
foreach (['name', 'familia'] as $field) {
if (isset($_POST[$field]) && $fieldValue = trim($_POST[$field])) {
$updatingFields[] = sprintf("%s = '%s'", $field, $link->real_escape_string($fieldValue));
}
}
$result = null;
if (count($updatingFields)) {
$query = sprintf(
"
UPDATE users
SET %s
WHERE id = '%s'
",
implode(', ', $updatingFields),
$link->real_escape_string($id)
);
$result = $link->query($query);
}
Будет осуществляться проверка на то, какая из блоков цифр в версии отличается.Это Вы какие то мелкие частности обсуждаете.
Как у них осуществляется проверка наличия даже самого ненужного файла? Удалил файл из каталога, а он берет и докачивает его. Проверяет перед запуском все каталоги на время изменения и сравнивает с серверными?Привязываться к дате изменений - не лучшая идея. Проверка обходит каталоги рекурсивно, сравнивает не только список файлов но и их хеши. Почитайте как работает dropbox/яндекс.диск, да тот же торрент наконец
Вопрос третий: Насколько эффективно будет сравнивать время изменения каталогов у пользователя и сравнивать с серверными? Ведь если даже в самой глубокой директории был изменен/удален/создан файл, то самый верхний по иерархии каталог будет иметь дату изменения ту, когда был затронут файл. Соответственно, таким образом можно избежать большого количества рекурсивных проверок.
И, соответственно, обновиться будет проще. Удаляем измененный каталог и закачиваем заново.
RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]
max
без использования условных операторов:def max_(a, b):
return (a + b + abs(a-b)) / 2;
m = 0
arr = [1, 2, 3, 4, 5, 6, 98, 65, 190]
for val in arr:
m = max_(m, val)
print(m)