<commit_before>package main

import (
	"flag"
	"log"
	"net"
	"net/http"
	"net/http/fcgi"
	_ "net/http/pprof"
	"os"
	"os/signal"
	"runtime"
	"syscall"

	"github.com/gin-gonic/gin"

	"gozen/config"
	"gozen/controllers"
)

func main() {
	var (
		pprof   bool
		useHttp bool
	)

	flag.BoolVar(&pprof, "pprof", false, "プロファイリング結果をポート6060で確認できるようになります。")
	flag.BoolVar(&useHttp, "http", false, "Goのhttpサーバーを使用します。")

	flag.Parse()

	lf, err := os.OpenFile(config.Log.FilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
	if err != nil {
		// logger.Init前のためlogを使用
		log.Fatalf("Failed to open log file: %v", err)
	}
	defer lf.Close()

	sig := make(chan os.Signal)
	signal.Notify(sig, os.Interrupt)
	signal.Notify(sig, syscall.SIGTERM)

	switch config.GetEnv() {
	case config.Production:
		// TODO
		gin.SetMode(gin.ReleaseMode)
	case config.Staging:
		// TODO
	case config.Development:
		// TODO
	}

	if pprof {
		runtime.SetBlockProfileRate(1)
		go func() {
			// :6060/debug/pprof/ でプロファイリング結果を確認できる
			http.ListenAndServe("0.0.0.0:6060", nil)
		}()
	}

	router := controllers.Routes()

	if useHttp {
		log.Println("use http")
		go func() {
			http.ListenAndServe(":9000", router)
		}()
	} else {
		log.Println("use fcgi(nginx)")
		listen, err := net.Listen("tcp", "127.0.0.1:9000")
		if err != nil {
			return
		}
		go func() {
			fcgi.Serve(listen, router)
		}()
	}

	<-sig<commit_msg>add log because we could not know which mode we run with<commit_after>package main

import (
	"flag"
	"log"
	"net"
	"net/http"
	"net/http/fcgi"
	_ "net/http/pprof"
	"os"
	"os/signal"
	"runtime"
	"syscall"

	"github.com/gin-gonic/gin"

	"gozen/config"
	"gozen/controllers"
)

func main() {
	var (
		pprof   bool
		useHttp bool
	)

	flag.BoolVar(&pprof, "pprof", false, "プロファイリング結果をポート6060で確認できるようになります。")
	flag.BoolVar(&useHttp, "http", false, "Goのhttpサーバーを使用します。")

	flag.Parse()

	lf, err := os.OpenFile(config.Log.FilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
	if err != nil {
		// logger.Init前のためlogを使用
		log.Fatalf("Failed to open log file: %v", err)
	}
	defer lf.Close()

	sig := make(chan os.Signal)
	signal.Notify(sig, os.Interrupt)
	signal.Notify(sig, syscall.SIGTERM)

	switch config.GetEnv() {
	case config.Production:
		// TODO
		log.Println(config.ProductionStr)
		gin.SetMode(gin.ReleaseMode)
	case config.Staging:
		// TODO
		log.Println(config.Staging)
	case config.Development:
		// TODO
		log.Println(config.Development)
	}

	if pprof {
		runtime.SetBlockProfileRate(1)
		go func() {
			// :6060/debug/pprof/ でプロファイリング結果を確認できる
			http.ListenAndServe("0.0.0.0:6060", nil)
		}()
	}

	router := controllers.Routes()

	if useHttp {
		log.Println("use http")
		go func() {
			http.ListenAndServe(":9000", router)
		}()
	} else {
		log.Println("use fcgi(nginx)")
		listen, err := net.Listen("tcp", "127.0.0.1:9000")
		if err != nil {
			return
		}
		go func() {
			fcgi.Serve(listen, router)
		}()
	}

	<-sig
{'fraction_non_alphanumeric': 0.16638019938123066, 'fraction_numerical': 0.02406325197662427, 'mean_word_length': 3.525660964230171, 'pattern_counts': {'":': 2, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6217842', 'n_tokens_mistral': 1448, 'n_tokens_neox': 1298, 'n_words': 221}