Etherpad-lite: ์—…๋ฐ์ดํŠธ ํ›„ (1.6.2-> 1.8.3) ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ๋…ธ์ถœ ๋  ๋•Œ ํˆด๋ฐ” ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ์ถ•์†Œ = true

์— ๋งŒ๋“  2020๋…„ 04์›” 28์ผ  ยท  110์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ether/etherpad-lite

image

๋„๊ตฌ ๋ชจ์Œ ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ๊ธ€๊ผด ๋ชจ์Œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ๋ชจ๋‘ ํด๋”์— ์žˆ์œผ๋ฉฐ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ๋„์™€ ์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์ ธ ์˜ค๊ธฐ/static/font/Roboto-Regular.ttf net :: ERR_ABORTED 404 (์ฐพ์„ ์ˆ˜ ์—†์Œ)

๋‚˜๋Š” ๋ชจ๋“  ๊ธ€๊ผด ํŒจ๋ฐ€๋ฆฌ์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ์–ป์Šต๋‹ˆ๋‹ค.

Bug Special case Bug UI express server

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Etherpad ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ (/ etherpad)์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•„ํŒŒ์น˜ ๊ตฌ์„ฑ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

settings.json์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  110 ๋Œ“๊ธ€

์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๊นŒ?
๊ฐœ๋ฐœ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
์ถ•์†Œ?
๋ณด์•ˆ ์‚ฌ๋ณธ ๋˜๋Š” ์„ค์ • .json
๊ธฐํƒ€.

https://mclear.co.uk/2015/01/15/how-to-write-a-bug-report/

๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ด์ง€๋งŒ systemd ์„œ๋น„์Šค์— "Environment = NODE_ENV = production"์ด ์žˆ์ง€๋งŒ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๊ฐ€์—†๊ณ  CSS๊ฐ€ ์ถ•์†Œ๋˜๊ณ  settings.json์ด ๊ฑฐ์˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (mysql ๋ฐ admin pw ๋งŒ ๋ณ€๊ฒฝ๋จ).

Etherpad๊ฐ€ ๋ชจ๋“  ๊ธ€๊ผด์„๋กœ๋“œ ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค./static/font/*.ttf ๋Œ€์‹ / etherpad / src / static / font /

settings.json์—์„œ minify๋ฅผ false๋กœ, maxage๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ ํ–ˆ์–ด, ์•„๋ฌด๊ฒƒ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•˜์–ด

์ง€๊ธˆ ๋‚ด ๋…ธํŠธ๋ถ์—์„œ ๋” ๋งŽ์€ ๊ฒƒ์„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์œ ์šฉํ•œ ๊ฒƒ์€ settings.json์„ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์•”ํ˜ธ๋Š” ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค). ์ œ๋ฐœ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

FWIW 1.6. *> 1.8.3์„ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ settings.json๊ณผ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ •์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

cp settings.json settings.backup.json
cp settings.json.template settings.json
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธ์ŠคํŠธ / ์‚ฌ์šฉ์ž / ํŒจ์Šค๋ฅผ settings.backup.json ์—์„œ settings.json ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

/*
  This file must be valid JSON. But comments are allowed

  Please edit settings.json, not settings.json.template

  To still commit settings without credentials you can
  store any credential settings in credentials.json
*/
{
  // Name your instance!
  "title": "HelpMe-Etherpad",

  // favicon default name
  // alternatively, set up a fully specified Url to your own favicon
  "favicon": "favicon.ico",

  //IP and port which etherpad should bind at
  "ip": "0.0.0.0",
  "port" : 9001,

  // Option to hide/show the settings.json in admin page, default option is set to true
  "showSettingsInAdminPage" : true,

  /*
  // Node native SSL support
  // this is disabled by default
  //
  // make sure to have the minimum and correct file access permissions set
  // so that the Etherpad server can access them

  "ssl" : {
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt",
            "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
          },

  */

  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
  //You shouldn't use "dirty" for for anything else than testing or development
  /*"dbType" : "dirty",
  //the database specific settings
  "dbSettings" : {
                   "filename" : "var/dirty.db"
                 },

   An Example of MySQL Configuration*/
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "etherpad",
                    "host"    : "localhost",
                    "password": "",
                    "database": "etherpad",
                    "charset" : "utf8mb4"
                  },
   "users": {
    "admin": {
        "password": "",
        "is_admin": true
        }
            },

  //the default text of a pad
  "defaultPadText" : "Willkommen zum CN-Etherpad!\n\nDieses Dokument wird beim Tippen laufend aktualisiert, sodass jeder immer denselben Text sieht. So kann man nahtlos zusammen an Dokumenten arbeiten.\n",

  /* Default Pad behavior, users can override by changing */
  "padOptions": {
    "noColors": false,
    "showControls": true,
    "showChat": true,
    "showLineNumbers": true,
    "useMonospaceFont": false,
    "userName": false,
    "userColor": false,
    "rtl": false,
    "alwaysShowChat": false,
    "chatAndUsers": false,
    "lang": "de-de"
  },

  /* Should we suppress errors from being visible in the default Pad Text? */
  "suppressErrorsInPadText" : false,

  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
  "requireSession" : false,

  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
  "editOnly" : false,

  /* Users, who have a valid session, automatically get granted access to password protected pads */
  "sessionNoPassword" : false,

  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
     but makes it impossible to debug the javascript/css */
  "minify" : false,

  /* How long may clients use served javascript code (in seconds)? Without versioning this
     may cause problems during deployment. Set to 0 to disable caching */
  "maxAge" : 21600, // 60 * 60 * 6 = 6 hours

  /* This is the absolute path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to advanced import/export features of pads*/
  "abiword" : "/usr/local/bin/abiword",

  /* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
     LibreOffice can be used in lieu of Abiword to export pads */
  "soffice" : null,

  /* This is the path to the Tidy executable. Setting it to null, disables Tidy.
     Tidy is used to improve the quality of exported pads*/
  "tidyHtml" : "/usr/bin/tidy",

  /* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
  "allowUnknownFileEnds" : true,

  /* This setting is used if you require authentication of all users.
     Note: /admin always requires authentication. */
  "requireAuthentication" : false,

  /* Require authorization by a module, or a user with is_admin set, see below. */
  "requireAuthorization" : false,

  /*when you use NginX or another proxy/ load-balancer set this to true*/
  "trustProxy" : false,

  /* Privacy: disable IP logging */
  "disableIPlogging" : false,

  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */


  // restrict socket.io transport methods
  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],

  // Allow Load Testing tools to hit the Etherpad Instance.  Warning this will disable security on the instance.
  "loadTest": false,

  // Disable indentation on new line when previous line ends with some special chars (':', '[', '(', '{')
  /*
  "indentationOnNewLine": false,
  */

  /* The toolbar buttons configuration.
  "toolbar": {
    "left": [
      ["bold", "italic", "underline", "strikethrough"],
      ["orderedlist", "unorderedlist", "indent", "outdent"],
      ["undo", "redo"],
      ["clearauthorship"]
    ],
    "right": [
      ["importexport", "timeslider", "savedrevision"],
      ["settings", "embed"],
      ["showusers"]
    ],
    "timeslider": [
      ["timeslider_export", "timeslider_returnToPad"]
    ]
  },
*/
  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
  "loglevel": "INFO",

  //Logging configuration. See log4js documentation for further information
  // https://github.com/nomiddlename/log4js-node
  // You can add as many appenders as you want here:
  "logconfig" :
    { "appenders": [
        { "type": "console"
        //, "category": "access"// only logs pad access
        }
    /*
      , { "type": "file"
      , "filename": "your-log-file-here.log"
      , "maxLogSize": 1024
      , "backups": 3 // how many log files there're gonna be at max
      //, "category": "test" // only log a specific category
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "warn" // filters out all log messages that have a lower level than "error"
        , "appender":
          {  Use whatever appender you want here  }
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "error" // filters out all log messages that have a lower level than "error"
        , "appender":
          { "type": "smtp"
          , "subject": "An error occurred in your EPL instance!"
          , "recipients": "[email protected], [email protected]"
          , "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
          , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
              "host": "smtp.example.com", "port": 465,
              "secureConnection": true,
              "auth": {
                  "user": "[email protected]",
                  "pass": "bar_foo"
              }
            }
          }
        }*/
      ]
    }
}

์ข‹์•„์š”, 2 ๋ถ„๋งŒ์ฃผ์„ธ์š”.

์•„๋‹ˆ์š”, ๋ณต์ œํ•˜์ง€ ์•Š์€ ๋„๊ตฌ ๋ชจ์Œ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ธ์Šคํ„ด์Šค๋Š” ๋‚ด๊ฐ€ ์•ก์„ธ์Šค ํ•  ์ˆ˜์žˆ๋Š” ๊ณต๊ฐœ์ž…๋‹ˆ๊นŒ? ์–ธ์ œ๋“ ์ง€ ์ €์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค. URL [email protected]

๋ฉ์ฒญํ•œ ์งˆ๋ฌธ ..

  • [x] ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์ง€์šฐ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
  • [x] bin/run.sh ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ์‹œ๋„

๊ฐ์‚ฌ!

์Šฌํ”„๊ฒŒ๋„ ๊ณต๊ฐœ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
settings.json์„ ์ƒˆ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์Šคํ‚จ๋„ ์Šคํ‚จ ์—†์Œ์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค ..
๊ทธ๋ฆฌ๊ณ  ์˜ˆ, run.sh๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ํ˜„๊ธˆ์„ ์ง€ ์› ์Šต๋‹ˆ๋‹ค. :)

์ด๊ฒƒ์€ systemd ์„œ๋น„์Šค btw์ž…๋‹ˆ๋‹ค.
[๋‹จ์œ„]
Description = ์ด๋” ํŒจ๋“œ
After = syslog.target network.target

[์„œ๋น„์Šค]
์œ ํ˜• = ๋‹จ์ˆœ
์‚ฌ์šฉ์ž = ์ด๋” ํŒจ๋“œ
๊ทธ๋ฃน = ์ด๋” ํŒจ๋“œ
WorkingDirectory = / opt / etherpad
ํ™˜๊ฒฝ = NODE_ENV = ์ƒ์‚ฐ
ExecStart = / opt / etherpad / bin / run.sh
๋‹ค์‹œ ์‹œ์ž‘ = ํ•ญ์ƒ

[์„ค์น˜]
WantedBy = multi-user.target

์–ด๋–ป๊ฒŒ ์„ค์น˜ ํ–ˆ์Šต๋‹ˆ๊นŒ? git clone ํ•˜์…จ๋‚˜์š”? ์•„๋‹ˆ๋ฉด ์ถœ์‹œ ๋œ .zip ํŒŒ์ผ์„ ํ’€๊ณ  ์••์ถ•์„ ํ‘ผ ์ ์ด ์žˆ๋‚˜์š”?

์š”์ฒญ URL : https://dev.com:9001/static/font/RobotoMono-Regular.ttf

jose<strong i="7">@server</strong>:~/develop$ locate RobotoMono | grep develop | grep Reg
/home/jose/develop/src/static/font/RobotoMono-Regular.ttf

๋ชจ๋‘ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

git clone์„ ํ†ตํ•ด ์„ค์น˜ํ–ˆ๊ฑฐ๋‚˜ ์˜คํžˆ๋ ค ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” zip unpack์„ ํ†ตํ•ด ๋ช‡ ๋…„ ์ „์— (๋‹ค๋ฅธ ๊ด€๋ฆฌ์ž์— ์˜ํ•ด) ์„ค์น˜๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด rsync๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„, ๋งˆ์ง€๋ง‰ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ดํ‚น์„ ํ–ˆ๋‚˜? git status ๊ฒฝ์šฐ ์ˆ˜์ • ๋œ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ƒˆ ์ €์žฅ์†Œ๋ฅผ git ๋ณต์ œ ํ•œ ๋‹ค์Œ settings.json์„ ๋ณต์‚ฌํ•˜๋ฉด ์–ด๋–ป๊ฒŒ๋ฉ๋‹ˆ๊นŒ? ์ž‘๋™ํ•˜์ง€๋งŒ ๋ญ”๊ฐ€ ์ด์ƒํ•˜๋‹ค๋Š” ๋ฌธ์ œ๋Š” ๋ถ„๋ช…ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ..

์ง€๊ธˆ ๊ทธ๋ ‡๊ฒŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋„ค, ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ธ€๊ผด์˜ ๋ฃจํŠธ ํด๋”๊ฐ€ etherpad์™€ ๋™์ผํ•˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ

์ฝ”๋“œ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค. src /๋Š” ๋ฃจํŠธ ํด๋”์ž…๋‹ˆ๋‹ค ..

๋‚˜๋Š” ์ด์ „ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ํ•ดํ‚นํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. git diff๋ฅผ ๋ณด์ง€ ์•Š๊ณ ๋Š” ๋ฌด์—‡์„ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ซ์•„๋„ ๋ ๊นŒ์š”?

์ด์ „ ๊ด€๋ฆฌ์ž๋Š” git์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ (์„ค์น˜๋˜์ง€ ์•Š์Œ) ๊นจ๋—ํ•œ ๋ณต์ œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@skramsa lulwut. ํด๋ก ์„ ์™„์ „ํžˆ ์ •๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•ด๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? :! ์„ค์ •์— ์ด์ƒ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์— ์˜ค๋ฅ˜๋‚˜ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์™„์ „ํžˆ ๊นจ๋—ํ•œ ๋ณต์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋Ÿฌ๋ฉด ์—ฌ์ „ํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž„์‹œ๋กœ ๊ณต๊ฐœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ณด์•ˆ ๋œ ์ธํŠธ๋ผ๋„ท์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ 6์—์„œ 12 ๋กœ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .. ์—ฌ๊ธฐ์—์„œ ๋‹ค๋ฅธ ๋””๋ฒ„๊ทธ ๋‹จ๊ณ„๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ..

๋‚ด๊ฐ€ ๊ฐ€์ง„ ์œ ์ผํ•œ ๋‹จ์„œ๋Š” ..
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429

ํ•˜์ง€๋งŒ ๋ชจ๋“  ์บ์‹œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ •๋ฆฌ ์‹คํ–‰์„ํ–ˆ๋‹ค๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค ..

minify๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  rm -Rf src/node_modules && rm src/package-lock.json ์„ (๋ฅผ) bin/run.sh ํ–ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ๊นจ๋—ํ•œ ๋ณต์ œ๋ฅผํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค;

git sha , npm --version ๋ฐ nodejs version ๊ฐ’์€ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ?

npm์€ 6.14.4์ด๊ณ  ๋…ธ๋“œ -v๋Š” 12.16.2์ž…๋‹ˆ๋‹ค. ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์ด์ง€๋งŒ "๋‚ด"git sha๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

1.6.2๋กœ ๋‹ค์‹œ ๋กค๋งํ•˜๊ณ  minify๋ฅผ false๋กœ ์„ค์ •ํ•˜๋ฉด ๊ฐ‘์ž๊ธฐ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (์ด์ „ ๋ฒ„์ „์˜ ์•„์ด์ฝ˜์กฐ์ฐจ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ). ๋‹คํ–‰์ž…๋‹ˆ๋‹ค .. ๋‹ค์Œ ์ฃผ์—์ด ์„ค์ •์œผ๋กœ ๋˜ ๋‹ค๋ฅธ ๊นจ๋—ํ•œ ์„ค์ •์„ ์‹œ๋„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ž‘๋™ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. : D ๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค !!

etherpad ํด๋”์— git rev-parse HEAD

๋‹น์‹ ์ด ์–ด๋–ค ์ปค๋ฐ‹์„ํ•˜๊ณ  ์žˆ๋Š”์ง€๋ณด๊ณ  ์‹ถ์–ด์š”.

์•ˆ๋…•ํ•˜์„ธ์š”
ํ”„๋ก์‹œ ๋’ค์— ์žˆ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ค์น˜๋ฅผ ์ €์žฅํ•˜๊ณ  ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜์—ฌ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ƒˆ๋กœ์šด ์„ค์น˜์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ :
๋ฐ˜๋ฉด์— ํฅ๋ฏธ๋กœ์šด ์ ์€ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  https์—†์ด ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ฉด ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์•„์ด์ฝ˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค !!

์•„ํŒŒ์น˜ ํ”„๋ก์‹œ ๊ตฌ์„ฑ์€ ๋ฌธ์„œ์—์„œ ์ œ๊ณต๋˜๋ฉฐ ๋‚ด ํŽธ์—๋Š” ์ด๊ตญ์ ์ธ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Etherpad ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ (/ etherpad)์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•„ํŒŒ์น˜ ๊ตฌ์„ฑ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

settings.json์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@skramsa ๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? Skramsa ์„ค์ •์— ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Etherpad ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ (/ etherpad)์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•„ํŒŒ์น˜ ๊ตฌ์„ฑ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

settings.json์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์žฌ์‹œ๋„ ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ทœ์น™์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@skramsa ๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? Skramsa ์„ค์ •์— ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ,ํ•˜์ง€๋งŒ @julpec ์€ ํ”„๋ก์‹œ ๋’ค์— ์žˆ์œผ๋ฏ€๋กœ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ;)

๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Etherpad ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ (/ etherpad)์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•„ํŒŒ์น˜ ๊ตฌ์„ฑ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

settings.json์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์žฌ์‹œ๋„ ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ทœ์น™์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹น์‹ ์ด ๋งž์•„์š”, ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์ œ ์—…๋ฐ์ดํŠธ ํ›„ ์„œ๋‘˜๋Ÿฌ ์ด๊ฒƒ์„ํ–ˆ์Šต๋‹ˆ๋‹ค.)

@skramsa ๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? Skramsa ์„ค์ •์— ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ,ํ•˜์ง€๋งŒ @julpec ์€ ํ”„๋ก์‹œ ๋’ค์— ์žˆ์œผ๋ฏ€๋กœ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ;)

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์•Œ๋ฆผ :

๋ฐ˜๋ฉด์— ํฅ๋ฏธ๋กœ์šด ์ ์€ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  https์—†์ด ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ฉด ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์•„์ด์ฝ˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค !!

์ œ ๊ฒฝ์šฐ์—๋Š” ํ”„๋ก์‹œ์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Etherpad ์ธ์Šคํ„ด์Šค์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ƒํ™ฉ์— ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•œ ํ›„ Etherpad๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋กœ๊ทธ์—์ด ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹คโ€ฆ

์•Œ๋ฆผ :

๋ฐ˜๋ฉด์— ํฅ๋ฏธ๋กœ์šด ์ ์€ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  https์—†์ด ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ฉด ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์•„์ด์ฝ˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค !!

์ œ ๊ฒฝ์šฐ์—๋Š” ํ”„๋ก์‹œ์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Etherpad ์ธ์Šคํ„ด์Šค์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ƒํ™ฉ์— ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•œ ํ›„ Etherpad๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋กœ๊ทธ์—์ด ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads
์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹คโ€ฆ

์ด์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ์ฃผ์†Œ ์ง€์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.
์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ (Apache) ๋’ค์— ์žˆ๊ณ  (ํ˜„์žฌ) ์ตœ์‹  ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (1 ๋ถ„ ์ „์— ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ด).

$ docker image ls
REPOSITORY           TAG            IMAGE ID            CREATED             SIZE
etherpad/etherpad    latest         878d71df1b8e        44 hours ago        273MB

๋„๊ตฌ ๋ชจ์Œ์€ ์›๋ณธ ๋ณด๊ณ ์„œ์™€ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. Etherpad๋Š” /pad/ ์•„๋ž˜์—์„œ ํ”„๋ก์‹œ๋˜์ง€๋งŒ ๊ธ€๊ผด์€ /static/ ์—์„œ๋กœ๋“œ๋˜์–ด 404 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

/static/ ๋Š” ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ๋กœ์ด๊ธฐ ๋•Œ๋ฌธ์— @lucaguindani ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข‹์•„์š”, ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ •๋ ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์ด์–ด์•ผํ•˜์ง€๋งŒ ์ด๋ฒˆ ์ฃผ์— ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ํŒจ์น˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์‹œ ์ฃผ๊ฐ„ ์ดํ›„์— ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๊ฐ€์กฑ๊ณผ ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์•„ํŒŒ์น˜ ๊ตฌ์„ฑ์œผ๋กœ ์ด๊ฒƒ์„ ๋ณต์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๊ฐ€๋˜๋Š” Apache ์„ค์ •์„ ๋ถ™์—ฌ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์œ„ํ‚ค ๊ตฌ์„ฑ์—์„œ nginx๋„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๊ฑฐ๊ธฐ์—์„œ ๋ณต์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ./

image

image

์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ ์ด์ƒํ•œ Apache ์ž˜๋ชป๋œ ๊ตฌ์„ฑ / ํŠน์ดํ•œ ๊ฒฝํ—˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์•„ํŒŒ์น˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ์„ ์–ด๋””์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์œ„ํ‚ค afaik์— ํ•˜๋‚˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•„์„œ ๋‹น์‹ ์ด ๋ถˆ๋Ÿ‰ํ•œ ๊ฒƒ ๊ฐ™์•„์š”? :ํ”ผ

์ถ”์‹  : ๋‚˜๋Š” ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๋Š” ๊ฑฐ์˜ ๋ฆด๋ฆฌ์Šค atm์ด๊ณ  nginx ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad {
        rewrite                /pad/(.*) /$1 break;
        rewrite                ^/pad$ /pad/ permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/socket.io {
        rewrite /pad/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

๋‚˜๋Š” ์ด์ƒํ•˜๊ฒŒ ๋ณด์ด๋Š” tests / frontend / index.html์ด ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ /pad/foo/p/blah ๋ฒ„๊ทธ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Etherpad ์ธก์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์•„ํŒŒ์น˜ ๊ตฌ์„ฑ์œผ๋กœ ์ด๊ฒƒ์„ ๋ณต์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๊ฐ€๋˜๋Š” Apache ์„ค์ •์„ ๋ถ™์—ฌ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ ๋‚ด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    AuthType Basic
    AuthName "authentification"
    AuthBasicProvider       ldap
    AuthLDAPURL "ldap://127.0.0.1:389/ou=****,dc=****,dc=****,dc=org"
    AuthLDAPGroupAttribute memberUid
    AuthLDAPGroupAttributeIsDN off
    require ldap-group cn=****,ou=***,dc=*****,dc=****,dc=org

    ProxyPass http://localhost:9002/ 
    ProxyPassReverse http://localhost:9002/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
    RequestHeader add X-Forwarded-User %{RU}e
</Location>

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•œ ์‹œ๊ฐ„์ด ์˜ค๋Š˜ ๋ฐค ์‹œ๋„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ ์ด์ƒํ•œ Apache ์ž˜๋ชป๋œ ๊ตฌ์„ฑ / ํŠน์ดํ•œ ๊ฒฝํ—˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์•„ํŒŒ์น˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ์„ ์–ด๋””์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์œ„ํ‚ค afaik์— ํ•˜๋‚˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•„์„œ ๋‹น์‹ ์ด ๋ถˆ๋Ÿ‰ํ•œ ๊ฒƒ ๊ฐ™์•„์š”? :ํ”ผ

์—ฌ๊ธฐ

์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ ์ด์ƒํ•œ Apache ์ž˜๋ชป๋œ ๊ตฌ์„ฑ / ํŠน์ดํ•œ ๊ฒฝํ—˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์•„ํŒŒ์น˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ์„ ์–ด๋””์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์œ„ํ‚ค afaik์— ํ•˜๋‚˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•„์„œ ๋‹น์‹ ์ด ๋ถˆ๋Ÿ‰ํ•œ ๊ฒƒ ๊ฐ™์•„์š”? :ํ”ผ

์—ฌ๊ธฐ

๋‚˜๋Š” ๊ฑฐ๊ธฐ๋ฅผ ๋ณด์•˜๊ณ  ์˜ˆ์ œ๋Š” Apache์˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— Etherpad๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

image

์ž๋ฅด๊ธฐ์˜ ์•ฝ๊ฐ„ ์ˆ˜์ • ๋œ ๋ฒ„์ „ ์‚ฌ์šฉ

<VirtualHost *:81>
<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    ProxyPass http://localhost:9001/
    ProxyPassReverse http://localhost:9001/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
</Location>
</VirtualHost>

image

jose<strong i="5">@server</strong>:~/develop$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-03-13T12:26:16

๋‚˜๋Š” ๊ฑฐ๊ธฐ๋ฅผ ๋ณด์•˜๊ณ  ์˜ˆ์ œ๋Š” Apache์˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— Etherpad๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ง์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒƒ์„ ์œ„์น˜ ํƒœ๊ทธ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ "ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ"์—†์ด ๊ตฌ์„ฑ์„ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์กฐ์‚ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค btw

๋ง์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒƒ์„ ์œ„์น˜ ํƒœ๊ทธ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ "ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ"์—†์ด ๊ตฌ์„ฑ์„ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ง์ด ์•ˆ ๋ผ์š” ... ์ œ ๋จธ๋ฆฌ ์†์— ์„œ์š”. ํ•˜์ง€๋งŒ ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ž…๋‹ˆ๋‹ค!
์ข‹์€ ์  : +1 :
๊ทธ๋Ÿฌ๋‚˜ ์ด์ „์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ์ž˜ ์ž‘๋™ํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.์ด๋ฅผ ๊ตฌ์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์—์„œ ์ˆ˜๋…„ ๋™์•ˆ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์•„ํŒŒ์น˜ "์‹ฑ๊ธ€ ์‚ฌ์ธ์˜จ (single sign-on)"๋’ค์—์„œ ์‹คํ–‰๋˜๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์œ„์น˜๋กœ "/"์ด์™ธ์˜ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๊ตฌ์„ฑ ๋ณต์‚ฌ / ๋ถ™์—ฌ ๋„ฃ๊ธฐ, ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ...

์ธ์ฆ ์„ค์ •์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋‚ด ์ž์‹ ๊ณผ์˜ ์ฐจ์ด์ ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ ์‹œ๋„ํ•ด ๋ณผ๊ฒŒ

์œ„์˜ ๊ตฌ์„ฑ ๋ณต์‚ฌ / ๋ถ™์—ฌ ๋„ฃ๊ธฐ, ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ...

์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ : ์•„์ด์ฝ˜ ํ‘œ์‹œ ์—†์Œ

Apache ๋ฒ„์ „?

์„œ๋ฒ„ ๋ฒ„์ „ : Apache / 2.4.38 (Debian)
์„œ๋ฒ„ ๊ตฌ์ถ• : 2019-10-15T19 : 53 : 42

์š”์†Œ ๊ฒ€์‚ฌ๊ธฐ๋กœ ์กฐ์‚ฌํ–ˆ๋Š”๋ฐ ์ด๊ฒƒ์ด ๊ทธ๊ฐ€ ๊ธ€๊ผด์˜ URL๋กœ ์ œ๊ณต ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Request URL: https://example.org/static/font/RobotoMono-Regular.ttf

๊ทธ๊ฒƒ์€ํ•ด์•ผํ•œ๋‹ค:

Request URL: https://example.org/pad/static/font/RobotoMono-Regular.ttf

"pad"ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€์—†๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” ์ƒˆ๋กœ์šด ํ˜ธ์ŠคํŠธ์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

docker run --name etherpad -d \
    -e NODE_ENV=production -p 9001:9001 \
    --mount type=bind,src=/etc/localtime,dst=/etc/localtime \
    --restart=unless-stopped \
    etherpad/etherpad

์›๋ž˜ ๊ตฌ์„ฑ์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค.

Apache ๊ตฌ์„ฑ :

<VirtualHost _default_:443>
    ServerName host
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass             /pad/     http://localhost:9001/
    ProxyPassReverse      /pad/     http://localhost:9001/
    SSLCertificateFile  /etc/apache2/ssl/host.example.com_cert_with_chain.pem
    SSLCertificateKeyFile /etc/apache2/ssl/host.example.com_sec_key.pem
    SSLCertificateChainFile /etc/apache2/ssl/chain.pem
</VirtualHost>

Apache ๋ฒ„์ „์€ 2.4.29์ž…๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์ง€์šฐ๊ณ  ๊ฒฐ๊ณผ :

image

๊ธฐ๋ฌ˜ํ•œ. Docker ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@JohnMcLear ์ •๋ง ๋ฏฟ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํฌํŠธ 81, ๋ณ„๋„์˜ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ๋“ฑ์—์„œ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๊ตฌ์„ฑ์œผ๋กœ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋งค๋ฒˆ ์บ์‹œ๋ฅผ ๋น„ ์› ์Šต๋‹ˆ๋‹ค.

๋‚ด ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

node: v10.20.1
npm: 6.14.4
apache2: Apache/2.4.38 (Debian)
etherpad: 1.8.3 (6210114)

๋‚˜๋Š” ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ (nginx)๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋˜๊ณ  ์ถ•์†Œ๊ฐ€ true๋กœ ์„ค์ •๋˜๋ฉด ์•„์ด์ฝ˜์ด ๋ˆ„๋ฝ๋ฉ๋‹ˆ๋‹ค. minify๋ฅผ false๋กœ ์„ค์ •ํ•˜๊ณ  clearRun.sh๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์ง€์šฐ ์ž๋งˆ์ž ์•„์ด์ฝ˜์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฝค ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ–ˆ๋˜ ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” minify : true ๋ฐ์ด Nginx ๊ตฌ์„ฑ์œผ๋กœ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                #proxy_pass        http://localhost:9001/;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }
}

@JohnMcLear ์˜ nginx ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์‹œ ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„

์ž‘๋™์ค‘์ธ Nginx ๊ตฌ์„ฑ :

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                rewrite                /pad/(.*) /$1 break;
                rewrite                ^/pad$ /pad/ permanent;
                proxy_pass        http://localhost:9001/;
                proxy_pass_header Server;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }

        location /pad/socket.io {
                rewrite /pad/socket.io/(.*) /socket.io/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_redirect         / /pad/;
                proxy_set_header Host $host;
                proxy_buffering off;
                proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
                proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
                proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
                proxy_set_header Host $host;  # pass the host header
                proxy_http_version 1.1;  # recommended with keepalive connections
                # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
                proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection $connection_upgrade;
        }

        location /static {
                rewrite /static/(.*) /static/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_set_header Host $host;
                proxy_buffering off;
        }
}

Op๋Š” minify true / false๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. Op๋Š” ๋˜ํ•œ rev proxy๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค .... ์ง‘์— ๋„์ฐฉํ•˜๋ฉด minify true๋กœ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถ•์†Œ๋กœ ์ธํ•œ ๊ฒƒ์ž„์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150์€ minify false ์— ๋Œ€ํ•ด ์•„๋ฌด๋Ÿฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค๊ณ  ์ฃผ์žฅํ–ˆ์œผ๋ฉฐ ๊ทธ๊ฒŒ ์‚ฌ์‹ค์ธ์ง€ ์ง์ ‘ ํ™•์ธํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค ..

* ํŽ˜์ด์Šค ํŒœ.

์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๊ณ ์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

FWIW Nginx๋„์ด ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช์œผ๋ฉฐ ๋ชจ๋“  ํŽ˜์ด์ง€ (ํŒจ๋“œ, ์ธ๋ฑ์Šค, ํƒ€์ž„ ์Šฌ๋ผ์ด๋” ๋“ฑ)์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” clean-css ๊ตฌํ˜„์— ์žˆ์Šต๋‹ˆ๋‹ค. CSS 3-4๋Š” relativeTo ์˜ต์…˜์„ ์ œ๊ฑฐํ–ˆ์œผ๋ฉฐ์ด ์ œ๊ฑฐ๋กœ ์ธํ•ด์ด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์˜ˆ์—์„œ rebase ๋ฐ rebaseTo ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 ์ด๋ฉฐ ์„ธ๋ฏธ ์ˆ˜์ •์ด๋ฉฐ https://github.com/JohnMcLear/etherpad-lite/commit/a8c66b3b513b058e89f70b8e8d5ab622b33fhack . ์•„์ด์ฝ˜์ด ๋‚˜ํƒ€๋‚˜์ง€๋งŒ ์ผ๋ถ€ ํŒจ๋“œ ๋‚ด๋ถ€ ๋ฐ ๊ธฐํƒ€ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๊ธ€๊ผด์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ œ์•ˆ @jakubpawlowicz @seballot ?

@JohnMcLear ์ด ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ์ž„์˜์˜ ๋ณ€ํ™˜์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. https://github.com/jakubpawlowicz/clean-css#how -to-apply-arbitrary-transformations-to-css-properties

๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ํ•ด์‹œ๋ฅผ ํ†ตํ•ด clean-css์— ์ž…๋ ฅ ์˜ต์…˜์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 ์ฐธ์กฐ

new CleanCSS().minify({"path/to/stylesheet/a.css": { styles: "/* source of a.css goes here */" }})

rebaseTo ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋” ์ด์ƒ์˜ ํ†ต์ฐฐ๋ ฅ ์—†์ด๋Š” ์ž‘๋™ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค!

๋‹ซํ˜”์Šต๋‹ˆ๊นŒ? ์ •๋ง ?

OP ๋‹ซํž˜ ... ๋‹ซํžˆ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. OP FWIW๋Š” ํŒ”๋กœ์šฐ ํ•ด์ œ ๋˜๋Š” ๊ตฌ๋… ํ•ด์ œ ๋˜๋Š” ์†Œ์Œ์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํด๋ฆญ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. EOW์— ์˜ํ•ด ํŒจ์น˜๊ฐ€ ์—†๋‹ค๋ฉด ํŒจ์น˜๋ฅผ ์‹œ๋„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‹œ๊ฐ„์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ ํŒจ์น˜๋ฅผ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@JohnMcLear ์ •๋ง ๋„์›€์„์ฃผ๊ณ  ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ €๋Š” ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ์ด์—†๊ณ  nodejs์—๋Š” ๋” ์ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์œผ๋กœ ๋งŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

๊ฐ์‚ฌํ•˜์ง€๋งŒ, ๋‹น์‹ ์˜ ์ƒ๊ฐ์€ ๊ธฐ์ €๊ท€๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค;)

๋ฒ”ํ”„ @seballot

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋งŽ์€ ์ƒ๊ฐ์ด ์—†์Šต๋‹ˆ๋‹ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ... ๋กœ์ปฌ๋กœ ์žฌํ˜„ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

  1. ์ž์‹ ํด๋ก  develop
  2. minify ์—์„œ true
  3. Etherpad๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํŒจ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค (์ž‘๋™ ์—ฌ๋ถ€ ํ™•์ธ).
  4. nginx ์„ค์น˜
  5. ์•„๋ž˜๋ฅผ / etc / nginx / sites-enabled / default์— ๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค.
server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad/foo {
        rewrite                /pad/foo/(.*) /$1 break;
        rewrite                ^/pad/foo$ /pad/foo permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/foo;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/foo/socket.io {
        rewrite /pad/foo/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/foo/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}
  1. nginx ๋‹ค์‹œ ์‹œ์ž‘
    http://127.0.0.1 : 9001 / p / blah๊ฐ€ http://127.0.0.1/pad/foo/p/blah ๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €์—์„œ http://127.0.0.1/pad/foo/p/blah ๋ฅผ ์—ฝ๋‹ˆ ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„คํŠธ์›Œํฌ ํƒญ์„ ํด๋ฆญํ•˜๊ณ  iframe ๋‚ด๋ถ€ ๊ธ€๊ผด 404๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” @import ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์ „๋‹ฌํ•˜์ง€๋งŒ cleanCSS ์„ ../../../ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŒจ๋“œ์™€ ํŽธ์ง‘๊ธฐ ๋ชจ๋‘ ๋™์ผํ•œ @ font.css๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‘˜ ๋‹ค "๋‹ค๋ฅธ basePaths"๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ž‘๋™ํ•˜๊ณ  ํ•˜๋‚˜๋Š” ์ถ•์†Œ์‹œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ์•„ํ•œ ์ˆ˜์ •์„ ์ƒ๊ฐํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋‹น์‹ ์ด ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

@seballot ์–ด๋–ค ์ง„ํ–‰ ์นœ๊ตฌ?

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ...

๋‚˜๋„, cleanCSS๋Š” ๋‚ด๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๋งˆ๋ฒ•์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ (๋‚˜๋Š” CSS ์‚ฌ๋žŒ์ด ์•„๋‹™๋‹ˆ๋‹ค) ๋‚ด ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋„ ํฅ๋ฏธ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์›ํ•˜์ง€ ์•Š์ง€๋งŒ csso๋ฅผ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— cleanCSS๋ฅผ csso๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ถ๊ทน์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ csso๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ cleanCSS๋งŒํผ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด cleanCSS dev์— ๋ถ€๋”ช์ณค๋‹ค. :)

์ข‹์•„! csso์™€ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋ฉด ์™œ ํ•จ๊ป˜ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?

csso๋Š” ์ถ•์†Œ๋˜์ง€๋งŒ ํŽ˜์ด์ง€๋กœ๋“œ ์ˆ˜๋ฅผ ์ค„์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ / ๋ฌธ์„œ ๋“ฑ์œผ๋กœ cleanCSS๋ฅผ ์„ ํ˜ธํ•˜๊ณ  ์ข‹์€ ํ”„๋กœ์ ํŠธ์— ์•ฝ๊ฐ„์˜ ์ž์›์„ ๋˜์ ธ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ Ether ํŠน์ • ๋ฒค์ฒ˜์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—์„œ์™€ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • git ์ €์žฅ์†Œ์—์„œ etherpad๋ฅผ ์„ค์น˜ํ•˜๊ณ  ./bin/run.sh๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  localhost์—์„œ ํฌํŠธ 9001์„ ์—ด๋ฉด ์„ค์น˜๊ฐ€ ์ž˜๋˜๊ณ  ์•„์ด์ฝ˜์ด ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • nginx ์„œ๋ฒ„ (jitsi๋„ ์‹คํ–‰ ์ค‘์ž„)์—์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๋ฉด ๋„๊ตฌ ๋ชจ์Œ ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? settings.json ํŒŒ์ผ์—๋Š” ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ settings.json์—์„œ minify๋ฅผ false๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋ฐค ํ•œ๋ฒˆ ๋ณด๋„๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ John์ด https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151์—์„œ ์ œ๊ณต ํ•œ nginx ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๋ณต์ œ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œ ๋œ Nginx ๊ตฌ์„ฑ๊ณผ Etherpad ์ฝ”๋“œ ๋ชจ๋‘ ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‚˜์ค‘์—.

nginx ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๋ฐ 2 โ€‹โ€‹์ดˆ๋ฅผ ๋ณด๋ƒˆ๊ณ  ๋ณต์‚ฌ / ๋ถ™์—ฌ ๋„ฃ๊ธฐ์—์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ /static ๋Œ€ํ•œ ๊ตฌ์„ฑ์ด ์—†์–ด์•ผํ•˜์ง€๋งŒ ๋ฌธ์ œ์˜ ๊ทผ์›์€ cleanCSS์— ๊นŠ์ˆ™์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ…Œ์ŠคํŠธ Nginx ๊ตฌ์„ฑ ํŒŒ์ผ์— /static ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๋ฆฌ๋””๋ ‰์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด location /static ์„น์…˜์—์„œ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ์—ฌ๊ธฐ . ์š”์ฆ˜๋ฐ›์€ ์ด๋ฉ”์ผ ํญํ’ ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ /static ๊ฐ€ ๋‹ค๋ฅธ ๋งŽ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ถฉ๋Œ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ถˆํ‰ ํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ์˜ˆ์— ์˜ํ•ด ์˜คํ•ด๋ฅผ ๋ฐ›์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ์ด๊ฒƒ์€ ๋ฌธ์„œ (์œ„ํ‚ค? โ€‹โ€‹์ธํ„ฐ๋„ท์ƒ์˜ Somehwere ๋‹ค๋ฅธ?)๋ฅผ ํ†ตํ•ด ์ˆ˜์ •ํ•˜๊ณ  ์˜ˆ์ œ์˜ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค .

  2. 4177b3f9434e๊ฐ€ font-face ์„ ์–ธ์„ src/static/css/pad.css ์—์„œ ๊ฐ€์ ธ์˜จ ๋‘ ํŒŒ์ผ ( src/static/css/pad/fonts.css ๋ฐ src/static/css/pad/toolbar.css )๊ณผ src URL๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ์‹œํŠธ ๊ฒฝ๋กœ์— ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค .

  3. ๊ฒŒ๋‹ค๊ฐ€, ๋‹ค๊ฐ€์˜ค๋Š” 1.8.4 ์šฉ์œผ๋กœ 95fd5ce2a45e๋ฅผ ๋ณ‘ํ•ฉ ํ•œ ํ›„์—๋Š” ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์บ์‹œ ๋ถ€์‹ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผํ•˜๊ณ  PR์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด # 4002๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋น„ ์ž‘์—…์— ๋Œ€ํ•ด @JohnMcLear ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@skramsa , @julpec , @lucaguindani , @ashishhari (๊ทธ๋ฆฌ๊ณ  John, ๋ถ„๋ช…ํžˆ) : PR์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด PR์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์œ„์น˜์—์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ€๋Šฅํ•˜๋ฉด ๋…๋ฆฝ์  ์ธ ๊ฒ€์ฆ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ์—๋Š” "/ static"์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ๊ทœ์น™์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–‘ํ•ด ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ•์†Œ๋ฅผ false๋กœ ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‚˜์—๊ฒŒ ๋ฌธ์ œ.
AWS EC2 ์ธ์Šคํ„ด์Šค์˜ jitsi ์„ค์น˜์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
jitsi๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” nginx ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
ํฌํŠธ 9001์—์„œ ๋™์ผํ•œ ์‹œ์Šคํ…œ์˜ etherpad ์„œ๋น„์Šค ์šฉ ์„œ๋ฒ„.

์ด๊ฒƒ์€ ๋‹ค๋ฅธ nginx ์„ค์ •์„ ์กฐ์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? (๋‚˜๋Š”
์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜์ง€๋งŒ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?), ์•„๋‹ˆ๋ฉด
์ˆ˜์ • ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋ฉด๋ฉ๋‹ˆ๋‹ค.

2020 ๋…„ 5 ์›” 14 ์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 6:07 muxator [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1.

ํ…Œ์ŠคํŠธ Nginx ๊ตฌ์„ฑ ํŒŒ์ผ์— / static์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๋ฆฌ๋””๋ ‰์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ
์—ฌ๊ธฐ์—์„œ ์ „์ฒด ์œ„์น˜ / ์ •์  ์„น์…˜์„ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151
์ด๋Ÿฌํ•œ ์ผ ๋™์•ˆ๋ฐ›์€ ์ด๋ฉ”์ผ ํญํ’, ๋‚˜๋Š”ํ•˜๋Š” ๊ธฐ์–ต ์ƒ๊ฐ์‚ฌ์šฉ์ž๋Š”-์‹ค์ œ๋กœ-/ static์ด ๋งŽ์€๋‹ค๋ฅธ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ . ์•„๋งˆ๋„ ๊ทธ๋Š” ๋น„์Šทํ•œ ์˜ˆ์— ์˜ํ•ด ์˜คํ•ด๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์—;

๋ฌธ์„œ (์œ„ํ‚ค?
์ธํ„ฐ๋„ท์— ๋‹ค๋ฅธ Somehwere?) ๋ฐ ํ’ˆ์งˆ ํ–ฅ์ƒ์˜ˆ .
2.

4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
๊ธ€๊ผด ํ‘œ๋ฉด ์„ ์–ธ์„ src / static / css / pad.css์—์„œ 2 ๊ฐœ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์ ธ์˜จ ํŒŒ์ผ (src / static / css / pad / fonts.css ๋ฐ
src / static / css / pad / toolbar.css)๋ฅผ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์—, URL์€
src๋Š” ์Šคํƒ€์ผ ์‹œํŠธ ๊ฒฝ๋กœ์— ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค.
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
์‚ผ.

๊ทธ ์œ„์— 95fd5ce๋ฅผ ๋ณ‘ํ•ฉ ํ•œ ํ›„
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
์•ž์œผ๋กœ ๋‚˜์˜ฌ 1.8.4 ์—์„œ๋Š” ์บ์‹œ ๋ถ€์‹ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผํ•˜๊ณ  PR์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋Œ“๊ธ€์„ ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.

@skramsa , @julpec , @lucaguindani , @ashishhari (๊ทธ๋ฆฌ๊ณ  John, ๋ถ„๋ช…ํžˆ) : PR์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด PR์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์œ„์น˜์—์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ€๋Šฅํ•˜๋ฉด ๋…๋ฆฝ์  ์ธ ๊ฒ€์ฆ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. static ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ๊ตฌ์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

์–‘ํ•ด ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. minify๋ฅผ false๋กœ ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜์—์„œ ๋‚˜๋Š” ๊ฑฐ์ง“์œผ๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œํ—˜ ํ•  ์ˆ˜์žˆ๋‹ค.

2020 ๋…„ 5 ์›” 14 ์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 1์‹œ 30 ๋ถ„ julpec [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (๊ทธ๋ฆฌ๊ณ  John, ๋ถ„๋ช…ํžˆ) : ๋‹น์‹ ์˜ ๋ˆ„๊ตฐ๊ฐ€์ž…๋‹ˆ๋‹ค
PR์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น PR์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š”
๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋…๋ฆฝ์  ์ธ ๊ฒ€์ฆ ์ฒ˜๋Ÿผ์š”.

ํ…Œ์ŠคํŠธ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •์ ์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ๊ตฌ์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

์–‘ํ•ด ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ•์†Œ๋ฅผ false๋กœ ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‚˜์—๊ฒŒ ๋ฌธ์ œ.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜์—์„œ ๋‚˜๋Š” ๊ฑฐ์ง“๊ณผ ๋ชจ๋“  ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ž˜ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

๋˜ํ•œ ํ™•์ธ-> minify๋ฅผ false๋กœ ์„ค์ •ํ•˜๋ฉด ๋‚ด ์‹œ์Šคํ…œ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
(์ง€๋‚œ๋ฒˆ์— ์„œ๋น„์Šค๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

2020 ๋…„ 5 ์›” 14 ์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 1์‹œ 30 ๋ถ„ julpec [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (๊ทธ๋ฆฌ๊ณ  John, ๋ถ„๋ช…ํžˆ) : ๋‹น์‹ ์˜ ๋ˆ„๊ตฐ๊ฐ€์ž…๋‹ˆ๋‹ค
PR์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น PR์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š”
๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋…๋ฆฝ์  ์ธ ๊ฒ€์ฆ ์ฒ˜๋Ÿผ์š”.

ํ…Œ์ŠคํŠธ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •์ ์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ๊ตฌ์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

์–‘ํ•ด ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ•์†Œ๋ฅผ false๋กœ ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‚˜์—๊ฒŒ ๋ฌธ์ œ.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜์—์„œ ๋‚˜๋Š” ๊ฑฐ์ง“๊ณผ ๋ชจ๋“  ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ž˜ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜์—์„œ ๋‚˜๋Š” ๊ฑฐ์ง“์œผ๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ํ™•์ธ-> minify๋ฅผ false๋กœ ์„ค์ •ํ•˜๋ฉด ๋‚ด ์‹œ์Šคํ…œ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@julpec , @ashishhari : ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.
์ด์ œ ํฌ๋ง์€ # 4002๊ฐ€ minify = true ์ผ ๋•Œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

๋ฒ„๊ทธ ๋ณต์ œ ์‹œ์ž‘ :

  • true ์—์„œ minify = true settings.json
  • Etherapd ๋‹ค์‹œ ์‹œ์ž‘
  • Etherpad ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ํˆด๋ฐ” ์•„์ด์ฝ˜์ด ํ‘œ์‹œ ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ˆ˜์ • ์‹œ๋„ :

  • minify = true ๋ฅผ settings.json
  • # 4002๋ฅผ ์ ์šฉํ•˜์‹ญ์‹œ์˜ค (๋‹น์‹ ์ด ๊ทธ๊ฒƒ์— ์ต์ˆ™ํ•œ ๊ฒฝ์šฐ์—๋งŒํ•˜์‹ญ์‹œ์˜ค)
  • Etherpad ๋‹ค์‹œ ์‹œ์ž‘
  • Etherpad ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ๋„๊ตฌ ๋ชจ์Œ ์•„์ด์ฝ˜์ด ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

์›ํ•˜์ง€๋งŒ PR ์‹ ์ฒญ ์ ˆ์ฐจ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค :(

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @muxator ๋‚˜๋Š” ํ•œ ์‹œ๊ฐ„ ๋‚ด์— ํ…Œ์ŠคํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค ์™€์šฐ ๋‚˜๋Š” ๊ทธ ์ˆ˜์ •์„ ๊ฒฐ์ฝ” ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์€ ๊ดด์งœ์ž…๋‹ˆ๋‹ค.

git remote add mux https://github.com/muxator/etherpad-lite/
git fetch mux
git checkout mux/fix/fonts-behind-reverse-proxy

ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์€ ๋ถ„๋“ค์„ ์œ„ํ•ด ..

ํ…Œ์ŠคํŠธ ํ›„ git checkout develop ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด mux์˜ ๋ถ€์‹ค ๋ธŒ๋žœ์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ์˜ค๋Š˜ ์˜คํ›„์— ํ…Œ์ŠคํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

ํ , @muxator .. ๋ญ”๊ฐ€ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ~ 54 ๊ฐœ์˜ ์š”์ฒญ์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ~ 49 ๊ฐœ (ํ˜„์žฌ develop )-์ถ”๊ฐ€ ์š”์ฒญ์„ ์ œ๊ณต ํ•  ์ˆ˜์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ์ด PR์€ IMHO๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ / ์ง€์›๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ์œ„ํ•œ ํŽ˜์ด์ง€๋กœ๋“œ ์„ฑ๋Šฅ ํšŒ๊ท€์ž…๋‹ˆ๋‹ค.

image

๋™์ผํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์š”์ฒญ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค ... :( defo ์ง„ํ–‰ ์ƒํƒœ์ด์ง€๋งŒ ๋™์ผํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์š”์ฒญ์€ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๊ณ ์žˆ๋Š” ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋‹ค๋ฅธ iframe์—์„œ ์˜จ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฉ”์ธ ํŽ˜์ด์ง€์™€ ์—๋””ํ„ฐ iframe ๋ชจ๋‘ ๊ธ€๊ผด์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ด๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

afaik cleanCSS๋Š” @seballot ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ ์ด๋žฌ์–ด?

์˜ˆ, ํ•ญ์ƒ ์ด๋žฌ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” cleanCss๊ฐ€ ๊ฐ CSS ๋ถ€๋ถ„ (pad / popups.css, pad / editbar.css, pad / chat.css ...)์„๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ณ  ๋Œ€์‹  ํ•˜๋‚˜์˜ pad.css ๋งŒ๋กœ๋“œํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ iframe์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋Š” iframe๊ณผ์˜ ๊ฐ ํŒŒ์ผ ๊ณต์œ ๋ฅผ ๋‘ ๋ฒˆ ์š”์ฒญํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ์€ ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ( "์บ์‹œ์—์„œ๋กœ๋“œ ๋จ").

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ ์šฉํ–ˆ๋Š”๋ฐ ์•„๋ฌด ๋ฌธ์ œ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (์•„ํŒŒ์น˜ ์‚ฌ์šฉ)

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @julpec.

์˜ค๋Š˜ ์ €๋…์—๋Š” @JohnMcLear๊ฐ€ ์ œ๊ธฐ ํ•œ ์š”์ฒญ ์ˆ˜์— ๋Œ€ํ•ด ์„ค๋ช…

๋ฉ‹์ง„ tnx mux

Github ์–ด๋”˜๊ฐ€์— HAR ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? # 4002๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ๊ณ  ๋…น์Œ ๋‚ด์šฉ์„ ๊ณต์œ  ํ•  ์˜ํ–ฅ์ด ์žˆ์ง€๋งŒ ์–ด๋””์— ์—…๋กœ๋“œํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ณตํ†ต ์š”์†Œ :

  • http : // localhost : 9001 / p / ciao ๋ฐฉ๋ฌธ
  • ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ์—†์Œ
  • ์ƒ์‚ฐ ๋ชจ๋“œ : ๊ฑฐ์ง“
  • ๋นˆ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋กœ ์‹œ์ž‘

๋ณ€์ˆ˜:

  • ๋ฒ„์ „ : 4816785aef45 vs # 4002
  • ์บ์‹œ : ์ฝœ๋“œ ( ์ฒซ ๋ฒˆ์งธ๋กœ๋“œ ) ๋Œ€ ํ•ซ (> = ๋‘ ๋ฒˆ์งธ๋กœ๋“œ )
  • ์ถ•์†Œ : ์ฐธ ๋Œ€ ๊ฑฐ์ง“
  • ๋ธŒ๋ผ์šฐ์ € : chromium 81 vs firefox 76

์ด๊ฒƒ๋“ค์€ 4 ๊ฐœ์˜ ์ด์ง„ ๋ณ€์ˆ˜-> 2 ^ 4 = 16 ๊ฐ€๋Šฅ์„ฑ ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค!

๊ด€๋ จ์„ฑ์ด ๋” ๋†’์€ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
| ์„ค๋ช… | ํ˜„์žฌ ๊ฐœ๋ฐœ (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, ์ถ•์†Œ, ์ฒซ ๋ฒˆ์งธ๋กœ๋“œ | 34 ๊ฐœ ์š”์ฒญ
1,61 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ
1.61MB ์ „์†ก ๋จ | 36 ๊ฐœ ์š”์ฒญ
1,61 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ
1.53MB ์ „์†ก |
| Firefox, ์ถ•์†Œ ๋œ ํ•ซ ์บ์‹œ | 29 ๊ฐœ ์š”์ฒญ
1,12 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ
216KB ์ „์†ก ๋จ | 31 ๊ฐœ ์š”์ฒญ
1,18 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ
216KB ์ „์†ก ๋จ |
| Chromium, ์ถ•์†Œ, ์ฒซ ๋ฒˆ์งธ๋กœ๋“œ | 44 ๊ฐœ ์š”์ฒญ
2,0MB
์ „์†ก ๋œ 1,5 MB | 109 richieste
3,0MB
์ „์†ก ๋œ 1,1MB |
| Chromium, ์ถ•์†Œ ๋œ, ํ•ซ ์บ์‹œ | 45 ๊ฐœ ์š”์ฒญ
2,2MB
5,7KB ์ „์†ก ๋จ | 129 ๊ฐœ ์š”์ฒญ
4,7 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ
4,7KB ์ „์†ก |

๊ฒฐ๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Chrome๊ณผ Firefox๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ธก์ •ํ•˜๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • PR # 4002๋Š” ์„œ๋ฒ„์— ๋” ๋งŽ์€ ์š”์ฒญ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ์บ์‹œ ์ ์ค‘๋ฅ  ํ–ฅ์ƒ : ์ „์†ก ๋œ ์—ด ๊ฐ์†Œ!
  • ๋กœ๋“œ ์‹œ๊ฐ„์€ ์ธก์ • ๋…ธ์ด์ฆˆ์˜ ํ•œ๊ณ„ ๋‚ด์—์„œ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ๋„ ๋‚ด ๊ฒฐ๊ณผ ์˜€๊ณ , ๋˜ํ•œ ์‹œ๊ฐ„์„๋‚ด์–ด ํŽ˜์ด์ง€๋กœ๋“œ ์†๋„ ์„ฑ๋Šฅ ํ”„๋กœํŒŒ์ผ ๋ง ๋„๊ตฌ (๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ๋„˜์–ด์„œ)๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ํ‰๊ท ์—์„œ ํฌ๊ฒŒ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์œผ๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ „์†ก ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์ข‹์€ ์ผ์ด์ง€๋งŒ HTTP ์š”์ฒญ ์˜ค๋ฒ„ ํ—ค๋“œ๋Š” ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ๋น„์šฉ์ด ๋งŽ์ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณ‘ํ•ฉ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํ”„๋ก ํŠธ ์—”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•  ๋•Œ (๊ถ๊ทน์ ์œผ๋กœ ์ด๋™ํ•ด์•ผํ•˜๋Š” ๋ชจ๋“  ์ธ๋ผ์ธ JS๋กœ ์ธํ•ด ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค๊ณ  ๋Š๋ผ๋Š”) ์ด๊ฒƒ์ด ๊ฐœ์„ ํ•ด์•ผ ํ•  ์˜์—ญ์ด๋ผ๋Š” ์ ์„ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค.

๋ชจ๋“  ๊ฒƒ์ด ๋งํ•˜๋ฉด, Etherpad๋Š” htis ๋ถ„์•ผ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์— ๋น„ํ•ด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๋‹จ,์ด ์„ธ์ƒ์—์„œ ํŽ˜์ด์ง€ '๋กœ๋“œ'์˜ ๋์ด ์•„๋‹ˆ๋ผ ์™•์ธ ์ ˆ๋Œ€์ ์œผ๋กœ ์ถฉ๊ฒฉ์ ์œผ๋กœ ๋น ๋ฅธ "ํŽธ์ง‘ ์‹œ๊ฐ„"์— ๋Œ€ํ•œ ๊ธˆ ํ‘œ์ค€ ์ธ Google ๋ฌธ์„œ๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ TLDR; @muxator ๋ณ‘ํ•ฉ-์ด ์Šค๋ ˆ๋“œ๋Š” ํ•˜์œ„ ํด๋”๊ฐ€ ์•„๋‹Œ Etherpad ์ธ์Šคํ„ด์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋ฅผ์œ„ํ•œ ๋ฆฌ์†Œ์Šค๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ ์ผ !

+1 tnx!

: +1 :

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰