Slide 1

Slide 1 text

amagitakayosi amagitakayosi HOW TO HACK VSCODE :Evil Ways HOW TO HACK VSCODE :Evil Ways

Slide 2

Slide 2 text

@amagitakayosi

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ϥΠϒίʔσΟϯά7+΍ͬͯ·͢

Slide 5

Slide 5 text

7&%" (-4-ϥΠϒίʔσΟϯά؀ڥ Λ࡞͍ͬͯ·͢

Slide 6

Slide 6 text

7&%"ͷྑ͍ͱ͜Ζ w 7+Ͱ͖Δ w "UPNͰ7+Ͱ͖Δ

Slide 7

Slide 7 text

7&%"ͷѱ͍ͱ͜Ζ w "UPNͰ͔͠ಈ͔ͳ͍

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

΍Γ·ͨ͠ ΍Γ·ͨ͠ ΍Γ·ͨ͠ ΍Γ·ͨ͠

Slide 10

Slide 10 text

ࠓ೔ͷϝχϡʔ w 7&%"ͷ෮श w ͳͥ74$PEFͩͱ೉͍͠ͷ͔ w 74$PEFͰͲ͏΍ͬͯಈ͔͔ͨ͠ w ࠓޙͷ՝୊

Slide 11

Slide 11 text

veda veda veda

Slide 12

Slide 12 text

ɹ7&%" w "UPN্Ͱ(-4-Λ࣮ߦ͢Δύοέʔδ w ಈըΛ੾Γସ͑ͯΤϑΣΫτ͔͚ͨΓɺ
 ϨΠϚʔνϯά͚ͩͰ7+ͨ͠Γ w Ի੠ೖྗɺ.*%*ɺ04$ೖྗͳͲ
 ͞·͟·ͳೖྗʹରԠ

Slide 13

Slide 13 text

ɹ"UPN w &MFDUSPOͰ࡞ΒΕͨΤσΟλ(JU)VC੡ w $ISPNFؙ͕͝ͱೖͬͯΔΑ͏ͳ΋Μ w ֦ுػೳͰ%0.͍͡Γ์୊ͳͷͰ
 8FC(-Ͱ΋8FC"VEJPͰ΋ԿͰ΋ग़དྷΔ

Slide 14

Slide 14 text

7&%"ͷ࢓૊Έ UIཁૉ ΢Πϯυ΢ ←canvasཁૉΛૠೖͯ͠
 ɹWebGLΛඳը

Slide 15

Slide 15 text

ɹɹ74$PEF 7JTVBM4UVEJP$PEF w .JDSPTPGU͕։ൃ w "UPNͱಉ͘͡&MFDUSPOϕʔε w ଟػೳɺߴ଎ɺิ׬͕ڧ͍ w ࠷ۙΈΜͳ࢖ͬͯΔ

Slide 16

Slide 16 text

https://insights.stackoverflow.com/survey/2018 ೥࠷΋ਓؾͷΤσΟλ

Slide 17

Slide 17 text

7&%"ɼͳͥ74$PEFʹҠ২Ͱ͖ͳ͍ͷʁ w 74$PEF͸"UPNͱಉ͘͡&MFDUSPOϕʔε w ύϑΥʔϚϯεͱ҆શੑͷͨΊɺ
 ֦ுػೳͷݖݶ͸͔ͳΓ੍ݶ͞ΕΔ w ֦ுػೳͷ+4͸ผϓϩηεͰ࣮ߦ͞ΕΔ w %0.৮Εͳ͍ʜʜ

Slide 18

Slide 18 text

“VS Codeの拡張機能は、エディターのUIにHTML要素を
   追加したり、カスタムCSSを適用する事はできません”

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

ຊ࣭ w ίʔυͷഎ໘ʹ w 8FC(-Ͱඳըͨ͠എܠΛ w ϦΞϧλΠϜͰඳը͍ͨ͠

Slide 21

Slide 21 text

Ξϓϩʔν w ֎෦ϓϩηεͰϏϡʔΞʔΛ૸ΒͤΔ w ΤσΟλͷඳը݁ՌΛ֎෦ϓϩηεʹૹΔ w ͳΜͱͯ͠΋74$PEF্Ͱಈ͔͢

Slide 22

Slide 22 text

֎෦ϓϩηεͰϏϡʔΞʔΛ૸ΒͤΔ w 74$PEFͷ΢Πϯυ΢͸൒ಁ໌ʹͰ͖Δ w ݱ࣌఺Ͱ͸8JOEPXT൛ͷΈ w .BD൛ରԠ΋#BDLMPHʹೖͬͨ w 74$PEFͷ΢Πϯυ΢ҐஔΛऔಘ͠ɺ
 ϏϡʔΞʔͷҐஔΛ௥ਵͤ͞Ε͹ྑ͍ʁ

Slide 23

Slide 23 text

֎෦ϓϩηεͰϏϡʔΞʔΛ૸ΒͤΔ VSCode Ϩϯμϥʔ

Slide 24

Slide 24 text

w ಈըͱͯ͠ૹΔ w ಛఆͷ΢Πϯυ΢ͷඳը݁ՌΛऔಘ͢Δͷ͸
 ͳΜ͔ؤுΕ͹Ͱ͖Δ͸ͣʢ7%.9౳͕ରԠ w ΤσΟλͷഎܠΛࠇʹͯ͠ɺ
 ࠇ͍ॴΛൈ͍ͯग़ྗʹॏͶΕ͹Α͍ʁ w ݟਏͦ͏ ΤσΟλͷඳը݁ՌΛ֎෦ϓϩηεʹૹΔ

Slide 25

Slide 25 text

ΤσΟλͷඳը݁ՌΛ֎෦ϓϩηεʹૹΔ ඳը݁Ռ Ϩϯμϥʔ VSCode

Slide 26

Slide 26 text

͏ʙʙΜʜʜʜʜʜʜ

Slide 27

Slide 27 text

Μʁ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

w ଧݤ͢ΔͱΧʔιϧ͕രൃ͢ΔΞϨ w ࠷ॳ͸"UPNͰ࣮૷͞Εͨ w "UPNͰ͸DBOWBTΞχϝʔγϣϯɺͳ͸ͣ w 74$PEFͰ͸%0.Λ͍͡Εͳ͍ͷͰ
 ෆՄೳͩͱࢥΘΕ͕ͨʜʜʁ vscode-power-mode

Slide 30

Slide 30 text

w ࣄલʹΤϑΣΫτΛ(*'Ξχϝʹॻ͖ग़͠ w %FDPSBUJPOͷCBDLHSPVOEJNBHFͱͯ͠
 (*'ΞχϝΛදࣔ 1PXFS.PEFͷ࢓૊Έ

Slide 31

Slide 31 text

w ίʔυͷಛఆͷൣғʹ૷০Λ௥ՃͰ͖Δ w MJOUΤϥʔ΍ɺΧϥʔίʔυͷ৭ϓϨϏϡʔ౳ w CFGPSF΍BGUFSʹ$44Λ౰ͯΒΕΔʂʂʂ w CBDLHSPVOEJNBHFͰը૾ΛಡΈࠐΊΔ %FDPSBUJPO"1*

Slide 32

Slide 32 text

ࢼ͠ʹը૾Λදࣔͯ͠ΈΔ

Slide 33

Slide 33 text

ը૾͸ಡΈࠐΊΔ w ຖϑϨʔϜɺඳը݁ՌΛը૾ϑΝΠϧʹ
 ॻ͖ग़ͤ͹ྑ͍ʂʂʂʂʂ w ΊͬͪΌॏͦ͏͚ͩͲ΍ͬͯΈΑ͏ w γΣʔμʔΛಡΈࠐΜͰը૾Λు͖ग़͢
 Ϩϯμϥʔ࡞Γɺ74$PEF͔Βݺͼग़ͤ͹ྑ͍

Slide 34

Slide 34 text

࡞ઓ 1. γΣʔμʔΛϑΝΠϧʹอଘ

Slide 35

Slide 35 text

࡞ઓ 2. Ϩϯμϥʔ͕γΣʔμʔΛಡΈࠐΉ

Slide 36

Slide 36 text

࡞ઓ 3. Ϩϯμϥʔ͸ຖϑϨʔϜ
 ɹ ը૾ϑΝΠϧΛॻ͖ग़͠ଓ͚Δ

Slide 37

Slide 37 text

࡞ઓ 4. ΤσΟλʔ͸ॻ͖ग़͞Εͨը૾Λ
 ɹ ຖϑϨʔϜDecoratorʹදࣔ͢Δ

Slide 38

Slide 38 text

w ཁ݅ w γΣʔμʔͷύεɺग़ྗαΠζΛड͚औΔ w 0QFO(-Ͱ(-4-Λඳը͠ɺϑΝΠϧʹॻग़ w ग़ྗͨ͠ϑΝΠϧ໊Λඪ४ग़ྗʹදࣔ w 74$PEF͕ಡΈࠐΊΔΑ͏ʹ Ϩϯμϥʔ࡞੒

Slide 39

Slide 39 text

w ΫϩείϯύΠϧ͍ͨ͠ w 8FC(-͸ΫϩεϓϥοτϑΥʔϜͰҒ͍ʜʜ w (Pͱ3VTUͰ0QFO(-ͷνϡʔτϦΞϧ΍ͬͨॴ
 (Pͷํָ͕ͦ͏ͩͬͨ w (P0QFO(-νϡʔτϦΞϧ
 IUUQTNFEJVNDPN!ESHPNFTQPQFOHMBOEHPMBOHHFUUJOHTUBSUFEBCDEEGEC w 3VTU0QFO(-νϡʔτϦΞϧ
 IUUQTXXXSFEEJUDPNSSVTUDPNNFOUTBCLH SVTU@BOE@PQFOHM@GSPN@TDSBUDI@B@CMPH@QPTU@TFSJFT ࠓճ͸(PΛ࠾༻

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

w QPTJUJPOpYFE͕ޮ͔ͳ͍ʜʜʂʁ ୭͔ॿ͚ͯ w શը໘ʹද͍ࣔͨ͠ͷͰɺ%FDPSBUPSͷൣғΛ
 ʹ͕ͨ͠ɺεΫϩʔϧ͢Δͱফ͑ͯ͠·͏ w 74$PEF͸ɺը໘֎ʹग़ͨཁૉΛ
 ଈ࠲ʹফͯ͠͠·͏Ͱରॲ w FEJUPSWJTJCMF3BOHFTͰରॲ %FDPSBUPS஍ຯʹۤ࿑ͨ͠఺

Slide 42

Slide 42 text

w ࠷ॳ͸GQT͘Β͍͔͠ग़ͳ͔ͬͨʜʜʂʂ w ΍ͬͨ͜ͱ w ඪ४ग़ྗɺϑΝΠϧॻ͖ग़͠ɺ
 γΣʔμʔߋ৽ͷରԠΛHPSPVUJOFͰ w 1/(ॻ͖ग़͠Λௐ੔ ύϑΥʔϚϯεվળ

Slide 43

Slide 43 text

ૉ๿ͳ࣮૷

Slide 44

Slide 44 text

ૉ๿ͳ࣮૷ ˡϑΝΠϧ*0ͰϒϩοΫ ˡඪ४ग़ྗͰϒϩοΫ

Slide 45

Slide 45 text

ը૾ϑΝΠϧ ॻ͖ग़͠ ඪ४ग़ྗ ϝΠϯ 描画したよ 描画! ファイル 書き出し! 書き出したよ 出力

Slide 46

Slide 46 text

ը૾ϑΝΠϧ ॻ͖ग़͠ ඪ४ग़ྗ ϝΠϯ

Slide 47

Slide 47 text

ը૾ϑΝΠϧ ॻ͖ग़͠ ඪ४ग़ྗ ϝΠϯ

Slide 48

Slide 48 text

վળޙͷ࣮૷ ˡඇಉظͰը૾ॻ͖ग़͠

Slide 49

Slide 49 text

վળޙͷ࣮૷ ˡඇಉظͰඪ४ग़ྗ

Slide 50

Slide 50 text

w (-'8͸ϝΠϯεϨουͰ͔͠ݺ΂ͳ͍ͷͰ
 Կ౓͔ϋϚͬͨ w ը૾ϑΝΠϧॻ͖ग़͠HPSPVUJOFͰ
 HMΦϒδΣΫτݺΜͰͯ4&(7ͨ͠Γ w HPͷඪ४ϕϯνϚʔΫπʔϧͰ͸
 ϝΠϯεϨουͰ࣮ߦ͢Δͷେมͦ͏ͩͬͨ HPSPVUJOFศརͰ͢Ͷ

Slide 51

Slide 51 text

w 0QFO(-͔Βऔಘͨ͠3(#"ΛJNBHFQOHʹ౉͢ͱ
 ্Լ൓సͯ͠ग़ྗ͞ΕΔ w 8FC(-ͩͱHM6/1"$,@'-*1@:@8(-Ͱ
 ඳը݁Ռ൓సͯ͠औಘͰ͖Δͷʹʜʜ w άάͬͯΈΔͱɺΈΜͳૉ๿ʹGPSϧʔϓͰ
 ্Լ൓సͯ͋͛ͯ͠ΔΑ͏ͩͬͨ 1/(ॻ͖ग़͠Λௐ੔

Slide 52

Slide 52 text

w σʔλॻ͖ࠐΈͷGPSϧʔϓΛมߋͯ͠
 ԼͷϐΫηϧ͔Βॱ൪ʹॻ͖ग़͢Α͏ʹͨ͠
 IUUQTHJUIVCDPNHPMBOHHPCMPCNBTUFSTSDJNBHFQOHXSJUFSHP- w ͍ͭͰʹ#VpPΛ౉ͯ͠
 ϑΝΠϧॻ͖ࠐΈΛόοϑΝϦϯά͢ΔΑ͏ʹ w 'JMFXSJUF͸όοϑΝϦϯά͞Εͳ͍ JNBHFQOHΛGPSL

Slide 53

Slide 53 text

YͰGQT͘Β͍ग़ΔΑ͏ʹ

Slide 54

Slide 54 text

w ΫϩεϓϥοτϑΥʔϜͳԻ੠ೖྗϥΠϒϥϦɺ
 ͋Μ·Γແ͍΋ΜͳΜͰ͢Ͷʜʜ w ࠓճ͸HPQPSUBVEJPΛ࠾༻ w ΫϩείϯύΠϧͰ͖ͳ͍ʜʜ(Pͳͷʹ w 3VTU͸Ի੠ೖྗपΓ͔ͳΓ͔ͬ͠Γͯ͠ΔͷͰ
 ͍ͣΕ3VTUʹҠߦ͢Δ͔΋ Ի੠ೖྗ

Slide 55

Slide 55 text

w HPඪ४ͷJNBHFQOHΛ࢖ͬͯͨ w 0QFO(-͔Βऔಘͨ͠3(#"Λ౉͢ͱ
 ্Լ൓సͯ͠ग़ྗ͞ΕΔ w 8FC(-ͩͱHM6/1"$,@'-*1@:@8(-Ͱ
 ඳը݁Ռ൓సͯ͠औಘͰ͖Δͷʹʜʜ w ௐ΂ͯΈΔͱɺΈΜͳૉ๿ʹGPSϧʔϓͰ
 ্Լ൓సͯ͋͛ͯ͠ΔΑ͏ͩͬͨ 1/(ॻ͖ग़͠Λௐ੔

Slide 56

Slide 56 text

DEMO https://github.com/fand/veda-vscode

Slide 57

Slide 57 text

w ύϑΥʔϚϯεվળ w ςΫενϟಡΈࠐΈ w .*%*ͱ͔ରԠ ࠓޙͷ՝୊

Slide 58

Slide 58 text

w ը૾ॻ͖ग़͕͠Ͳ͏ͯ͠΋ϘτϧωοΫʹͳΔ w ॻ͖ग़͠ऴΘΓΛ଴ͨͣʹϩʔυͯ͠ΈΔʁ w ్த·Ͱ͔͠ಡΈࠐΊͣϒπ੾Εͨ͠ w ϑΝΠϧ*0ݮΒ͢ʹ͸"1/(͕࢖͑Δʁ ύϑΥʔϚϯεվળ

Slide 59

Slide 59 text

w ߴը࣭Ξχϝʔγϣϯը૾ϑΥʔϚοτ w -*/&ελϯϓͱ͔Ͱ࢖ΘΕͯΔ w ϑΝΠϧͷߏ଄తʹ͸ɺ
 ෳ਺ͷ1/(Λ·ͱΊͯϔομ௥Ճ͢Δ͚ͩ w ϦΞϧλΠϜੑ͕ࣦΘΕΔͷͰϘπ "1/(

Slide 60

Slide 60 text

w 7&%"Ͱ͸ɺಈըૉࡐΛϩʔυͯ͠
 ςΫενϟͱͯ͠ར༻Ͱ͖Δ w 8FC(-ͷ"1*ʹWJEFPཁૉΛ౉ͯ͠Δ͚ͩ
 ʢϒϥ΢β͸Ғ͍ʜʜʣ w EDHNG ''.QFHͷϥούʔ Λ࢖͑͹ɺ
 ಈըͷ֤ϑϨʔϜΛ3(#"ͱͯ͠औಘͰ͖Δʜʁ ςΫενϟಡΈࠐΈ

Slide 61

Slide 61 text

͜͜Ͱ࣌ؒ੾Ε

Slide 62

Slide 62 text

·ͱΊ w ͳΜ͔ແཧ΍ΓؤுͬͨΒͦΕͳΓʹಈ͍ͨ w 74$PEFݫ͍͠ɻ"UPNͷᨳ͍จ۟
 ʮA hackable text editor for the 21st Centuryʯ
 ͸ӕ͡Όͳ͍ͳʜʜ w ϒϥ΢β͸Ғ͍Ϥ

Slide 63

Slide 63 text

ϒϥ΢βͬͯੌ͍ɺҒ͍ w 8FC(-΋Ғ͍ w UFY*NBHF%ʹDBOWBT΍WJEFPཁૉΛ౉ͨ͠Β
 ෆࢥٞͳྗͰϩʔυग़དྷΔΑ͏ʹͳΔ w 8FC"VEJP"1*ɺϓϥοτϑΥʔϜͷࣄߟ͑ͣʹ
 Ի੠ೖྗͱΕΔ w "1/(ಡΈࠐΈͱ͔΋Կ΋ߟ͑ͣʹߦ͚Δ

Slide 64

Slide 64 text

!74$PEF։ൃνʔϜ֤Ґ ֦ுػೳͰ%0.͍͡ΕΔΑ͏ʹ
 ͯ͘͠Εʂʂʂʂʂʂʂʂʂʂʂ ʂʂʂʂʂʂʂʂʂʂʂʂʂʂʂ ʂཔΉʂʂʂʂʂʂʂʂʂʂʂʂ ʂʂʂʂʂʂʂʂʂʂʂʂʂʂ ʂʂʂʂʂʂʂʂʂʂʂʂʂʂʂ

Slide 65

Slide 65 text

@amagitakayosi

Slide 66

Slide 66 text

https://veda.gl/