const Context = createContext();
function ContextProvider({ children }) {
const [active, setActive] = useState(false);
return <Context.Provider value={{ active, setActive }} >{children}</Context.Provder>
}
function App() {
return (
<ContextProvider>
<MyComponent />
</ContextProvider>
)
}
function MyComponent() {
const { active, setActive } = useContext(Context);
...
}
package main
import (
"bufio"
"fmt"
"os"
"sync"
)
func main() {
urls := make(chan string)
go fillChannel(urls)
// создаем группу для ожидания, того, что все воркеры завершены
wg := &sync.WaitGroup{}
for i := 0; i < 5; i++ {
// при запуске каждого воркера, увеличиваем счетчик в группе на 1
wg.Add(1)
go requestWorker(urls, wg)
}
// ждем, пока счетчик в группе не будет равен 0
wg.Wait()
}
func requestWorker(channel <-chan string, wg *sync.WaitGroup) {
// По завершении воркера счетчик в группе будет уменьшен на 1
defer wg.Done()
// Заодно пишем сообщение о завершении воркера
defer println("Worker stopped")
// Постоянно читаем из канала новые сообщения
// цикл автоматически завершится, когда канал закроется и буфер будет пуст
for url := range channel {
println(url)
}
}
func fillChannel(channel chan<- string) {
file, err := os.Open("data.txt")
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
fileScanner := bufio.NewScanner(file)
fileScanner.Split(bufio.ScanLines)
for fileScanner.Scan() {
channel <- fileScanner.Text()
}
// закрываем канал, когда данные кончились
// в го принято, чтобы канал закрывал только тот, кто в него пишет
close(channel)
}
void BubbleSort(vector<int> v);
не вызов функции. Это ее объявление. В коде предварительные объявления функций могут встречаться где угодно, синтаксически это верно, потому компилятор и не ругается. Но вызова не происходит, потому что его нет.arr.map(item => Object.fromEntries([item]))
const resultArr = [];
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
const obj = {};
obj[item[0]] = item[1];
resultArr.push(obj);
}
const resultArr = [];
for (let [prop, value] of arr) {
const obj = { [prop]: value };
resultArr.push(obj);
}
.env
, то без второго параметра$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
.env
должен располагаться на один уровень выше файла, в котором вы это написали.$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__), 'my_env');
.my_env
type Numbers struct {
Num1 int
Num2 int
}
type ThreeNumbers struct {
Num1 int
Num2 int
Num3 int
}
func (n Numbers) Sum() int {
return n.Num1 + n.Num2
}
func (n ThreeNumbers) Sum() int {
return n.Num1 + n.Num2 + n.Num3
}
func SumAll(numbers NumberInterface) int {
return numbers.Sum()
}
# клонируем репозиторий в соседний каталог
# иначе придётся использовать ключ --force
git clone --no-local . ../clonerepo/
# переходим в свежий клон
cd ../clonerepo
# чистим
git filter-repo --path "path/to/file" --invert-paths
# проверим что файл исчез
git log --all --oneline --name-status -- "path/to/file"
type Forks []struct {
ForkID string `json:"fork_id"`
Income float64 `json:"income"`
Sport string `json:"sport"`
...............
AliveSec int `json:"alive_sec"`
ValuingData ValuingData `json:"valuing_data"`
}
type Fork struct {
ForkID string `json:"fork_id"`
Income float64 `json:"income"`
Sport string `json:"sport"`
...............
AliveSec int `json:"alive_sec"`
ValuingData ValuingData `json:"valuing_data"`
}
type Forks []Fork
func checkBet(body []byte, v *Fork) {
......
func main() {
fn := some
fmt.Println(fn())
fn = other
fmt.Println(fn())
}
func some() int {
return 1
}
func other() int {
return 2
}
Ожидаю что файлы из директории var/www/html попадут на хост в ./www
volumes:
- /папка_на_хосте:/папка_в_контейнере_1
- имя_тома:/папка_в_контейнере_2
После этого, если внутри контейнера в этой папке создаётся файл, он оказывается в папке_хоста или томе./var/www/html
— будь она папкой контейнера или смонтированной в него папкой хоста или томом докера. При запуске, если там пусто, файлы создаются / записываются контейнером.entrypoint.sh
, в который поместите логику инициализации приложения, в т.ч. копирование-создание файлов. Укажите его как ENTRYPOINT контейнера. git update-index --assume-unchanged файл
- document.querySelector('.calculate').addEventListener('click', function () {
+ document.querySelector('form').addEventListener('input', function () {