<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jimmy Tang</title>
    <description>The latest articles on DEV Community by Jimmy Tang (@blaytenshi).</description>
    <link>https://dev.to/blaytenshi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F386066%2F7ea1f9a9-961f-403c-8d9b-3df7e254e76d.jpeg</url>
      <title>DEV Community: Jimmy Tang</title>
      <link>https://dev.to/blaytenshi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blaytenshi"/>
    <language>en</language>
    <item>
      <title>Installing (multiple) Java on MacOS managed by jEnv</title>
      <dc:creator>Jimmy Tang</dc:creator>
      <pubDate>Mon, 07 Oct 2024 06:45:22 +0000</pubDate>
      <link>https://dev.to/blaytenshi/installing-multiple-java-on-macos-managed-by-jenv-l6i</link>
      <guid>https://dev.to/blaytenshi/installing-multiple-java-on-macos-managed-by-jenv-l6i</guid>
      <description>&lt;h2&gt;
  
  
  Install some Java!
&lt;/h2&gt;

&lt;p&gt;I'm gonna install three version's from &lt;a href="https://formulae.brew.sh/formula/openjdk" rel="noopener noreferrer"&gt;openjdk using Homebrew&lt;/a&gt;! We should all know what Homebrew is by now...&lt;br&gt;
&lt;code&gt;$ brew install openjdk@17&lt;/code&gt;&lt;br&gt;
&lt;code&gt;$ brew install openjdk@21&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Create some Symlinks
&lt;/h2&gt;

&lt;p&gt;As far as I understand it MacOS has a special Java VM folder where it installs the JVMs. We'll create symlinks to versions we just installed from Homebrew.&lt;br&gt;
&lt;code&gt;sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Install jEnv
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.jenv.be/" rel="noopener noreferrer"&gt;jenv&lt;/a&gt; is a Java installation version manager. Install with Homebrew as well:&lt;br&gt;
&lt;code&gt;$ brew install jenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add the following to your shell's .rc file so jenv is executed upon terminal startup&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Setup JEnv to install run&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.jenv/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;jenv init -&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="c"&gt;# Have JAVA_HOME set by JEnv for us...&lt;/span&gt;
jenv enable-plugin &lt;span class="nb"&gt;export&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source the file to apply the changes&lt;br&gt;
&lt;code&gt;source ~/.zshrc  # or ~/.bash_profile, ~/.bashrc, etc.&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Add the JVMs to jenv
&lt;/h2&gt;

&lt;p&gt;Add the versions in Java VM folder to jenv so it can manage them&lt;br&gt;
&lt;code&gt;jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home/&lt;/code&gt;&lt;br&gt;
jenv add /Library/Java/JavaVirtualMachines/openjdk-&lt;code&gt;21.jdk/Contents/Home/&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  See the versions installed by jenv
&lt;/h2&gt;

&lt;p&gt;You can see the installed versions by &lt;code&gt;echo ${JAVA_HOME}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;jenv versions
&lt;span class="k"&gt;*&lt;/span&gt; system &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;set &lt;/span&gt;by /Users/user/.jenv/version&lt;span class="o"&gt;)&lt;/span&gt;
  17
  17.0
  17.0.12
  21
  21.0
  21.0.4
  openjdk64-17.0.12
  openjdk64-21.0.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  See which version of Java you're using:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;java &lt;span class="nt"&gt;-version&lt;/span&gt;
openjdk version &lt;span class="s2"&gt;"17.0.12"&lt;/span&gt; 2024-07-16
OpenJDK Runtime Environment Homebrew &lt;span class="o"&gt;(&lt;/span&gt;build 17.0.12+0&lt;span class="o"&gt;)&lt;/span&gt;
OpenJDK 64-Bit Server VM Homebrew &lt;span class="o"&gt;(&lt;/span&gt;build 17.0.12+0, mixed mode, sharing&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set/unset global version of Java
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;jenv global 21.0.2
&lt;span class="nv"&gt;$ &lt;/span&gt;jenv global &lt;span class="nt"&gt;--unset&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set/unset local version of Java
&lt;/h2&gt;

&lt;p&gt;This will add a &lt;code&gt;.java-version&lt;/code&gt; file in the directory you're currently in so you can commit it as a part of your Java project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;jenv &lt;span class="nb"&gt;local &lt;/span&gt;21.0.2
&lt;span class="nv"&gt;$ &lt;/span&gt;jenv &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nt"&gt;--unset&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congrats! You've just installed Java on your MacOS! Have fun on your Java/Kotlin projects! 🥳&lt;/p&gt;

</description>
      <category>java</category>
      <category>jenv</category>
    </item>
    <item>
      <title>Enabling ESLint on Intellij &amp; VSCode</title>
      <dc:creator>Jimmy Tang</dc:creator>
      <pubDate>Fri, 26 Feb 2021 16:03:02 +0000</pubDate>
      <link>https://dev.to/blaytenshi/enabling-eslint-on-intellij-vscode-3614</link>
      <guid>https://dev.to/blaytenshi/enabling-eslint-on-intellij-vscode-3614</guid>
      <description>&lt;p&gt;ESLint is a pretty cool tool that cleans up your Javascript code for you! But when you're deving on an IDE such as IntelliJ/WebStorm/VSCode, who wants to be running &lt;code&gt;npm run lint&lt;/code&gt; all the time am I right?&lt;/p&gt;

&lt;p&gt;"Would be pretty awesome to have my IDE run my linting automatically... But how?" - You.&lt;/p&gt;

&lt;p&gt;You've come to the right place my friend! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  IntellJ/WebStorm
&lt;/h2&gt;

&lt;p&gt;Let's start with IntelliJ first because it's the easiest! It's usually already set up on IntelliJ (and subsequently WebStorm). In case it isn't, here are the steps to enable it.&lt;/p&gt;

&lt;p&gt;I'm assuming you already have a &lt;code&gt;.eslintrc.*&lt;/code&gt; file in your project root directory. This is usually standard practice. If not, make one and put all your settings in there!&lt;/p&gt;

&lt;p&gt;For context, the project I'll be using in this example is a Vue project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Find your &lt;strong&gt;Settings&lt;/strong&gt; (where this is differs for Windows/OSX)&lt;/p&gt;


&lt;img alt="IntelliJ Settings on Windows" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3nuss9ic7o996sijvt7.png"&gt;Forgive me for I am but a Windows pleb

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to &lt;strong&gt;Language &amp;amp; Frameworks &amp;gt; Javascript &amp;gt; Code Quality Tools &amp;gt; ESLint&lt;/strong&gt;&lt;/p&gt;


&lt;img alt="ESLint Settings in IntelliJ" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4b3hnbb24zd8rfwbt2b5.png"&gt;Ensure this option is checked

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure that the "Automatic ESLint configuration" is checked! Like the screenshot says, it will use the ESLint package as well as the &lt;code&gt;.eslintrc.*&lt;/code&gt; to run the linter.&lt;/p&gt;


&lt;img alt="ESlint showing errors" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkcxcz33h46ynx9v5zrk.png"&gt;Fix your mistakes, noobs

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, in the files that you work on, the IDE will pick up any mistakes you made and highlight them for you to fix up! Easy!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  VSCode
&lt;/h2&gt;

&lt;p&gt;VSCode is a little trickier to set up as it doesn't come with a tool to run ESLint out of a box. You have to install it as an &lt;em&gt;extension&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The most popular ESLint extention by far is &lt;strong&gt;ESLint by Dirk Baeumer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ocmt3i0txlib1awnnk5.png" class="article-body-image-wrapper"&gt;&lt;img alt="ESLint VSCode Extension by Dirk Baeumer" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ocmt3i0txlib1awnnk5.png"&gt;&lt;/a&gt;&lt;br&gt;Can't go wrong when it's been  installed over 13 million times
  &lt;/p&gt;

&lt;p&gt;Once it is installed, make sure it is enabled (by clicking on the Enable button if it isn't already), and just like the setup for  IntelliJ, check that your &lt;code&gt;.eslintrc.*&lt;/code&gt; file is in your project root!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open the &lt;strong&gt;Command Palette&lt;/strong&gt;&lt;/p&gt;


&lt;img alt="VSCode Command Palette" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bxuaniml1qwwtrt7k4c.png"&gt;...Or you can hit Ctrl + Shift + P

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Search for this Command: "&lt;strong&gt;ESLint: Manage Library Execution&lt;/strong&gt;"&lt;/p&gt;


&lt;img alt="Managing ESLint Library Execution" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz6z2gqfz8c5nxbkoi22.png"&gt;Allowing ESLint Extension to run in your project

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A popup like below should show up asking if you want to allow the ESLint extension to run the ESLint you've installed in your project using the &lt;code&gt;.eslintrc.*&lt;/code&gt; config file. This is different to clicking the 'Enable' button after you install the ESLint Extension so make sure you don't skip this step! As for which option you should pick. &lt;code&gt;Allow Everywhere&lt;/code&gt; enables ESLint for all workspaces (or projects) which is useful if all your project happen to be Javascript based. Otherwise &lt;code&gt;Allow&lt;/code&gt; will just enable it for this project and you have to repeat these steps for all subsequent projects.&lt;/p&gt;


&lt;img alt="Allowing extension execution in Project" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpz72onubx881bhl3f8h.png"&gt;Allow... Everywhere? 🤔

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now just open up your Javascript files and start fixing up any mistakes the linter picks up!&lt;/p&gt;


&lt;img alt="Allowing extension execution in Project" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabishmuoos17ig1da7nc.png"&gt;ESLint: "REEEEEEEEEEEEEeeeee..."

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Linting &lt;code&gt;.vue&lt;/code&gt; files!
&lt;/h2&gt;

&lt;p&gt;If you're linting &lt;code&gt;.vue&lt;/code&gt; files like I am, the ESLint extension doesn't pick up Vue SFC files. If your project is pure Javascript or React, you don't need to worry about this extra step!&lt;/p&gt;

&lt;p&gt;According to the official eslint-plugin-vue guide &lt;a href="https://eslint.vuejs.org/user-guide/#editor-integrations" rel="noopener noreferrer"&gt;here&lt;/a&gt;, we need to create a &lt;code&gt;.vscode&lt;/code&gt; folder in the root directory of the project and within it, create a &lt;code&gt;settings.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Inside that file, you'll need to add a bit of extra config for the ESLint plugin to pick up &lt;code&gt;.vue&lt;/code&gt; files.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eslint.validate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"javascript"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"javascriptreact"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"vue"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"vetur.validation.template"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;vetur&lt;/code&gt; setting is if you have the vetur plugin installed.&lt;/p&gt;

&lt;p&gt;And that's it! Happy Linting!&lt;/p&gt;

</description>
      <category>vue</category>
      <category>eslint</category>
      <category>vscode</category>
      <category>intellij</category>
    </item>
  </channel>
</rss>
